Your own tasks and reward for RL

An Environment can now be two Python functions: tasks(split) returns prompts with their answers and reward(completion, answer) scores a completion. Copy the module onto the new env-base image, push it, and name the image in an Environment; TrainingJobs and rl.grpo_lora(environment="<name>@<version>") use it like a catalog Environment, with answers kept from the trainer and grading done by Nodus. See examples/training/custom-reward. The Python SDK now passes a bare environment name through to your project instead of the nodus catalog.

An Environment can also name a pip package (spec.package.pip): Nodus builds it onto env-base when you apply it, so no Docker is needed. Images with build steps or a Dockerfile now build too, and Environment images may live in your organization’s space in the Nodus registry.