diff --git a/wandb/sdk/launch/builder/build.py b/wandb/sdk/launch/builder/build.py index f4b6d85aab4..e16451bb801 100644 --- a/wandb/sdk/launch/builder/build.py +++ b/wandb/sdk/launch/builder/build.py @@ -225,7 +225,14 @@ def get_env_vars_dict(launch_project: LaunchProject, api: Api) -> Dict[str, str] # TODO: handle env vars > 32760 characters env_vars["WANDB_CONFIG"] = json.dumps(launch_project.override_config) - env_vars["WANDB_ARTIFACTS"] = json.dumps(launch_project.override_artifacts) + artifacts = {} + # if we're spinning up a launch process from a job + # we should tell the run to use that artifact + if launch_project.job: + artifacts = {wandb.util.LAUNCH_JOB_ARTIFACT_SLOT_NAME: launch_project.job} + env_vars["WANDB_ARTIFACTS"] = json.dumps( + {**artifacts, **launch_project.override_artifacts} + ) # check if the user provided an override entrypoint, otherwise use the default if launch_project.override_entrypoint is not None: diff --git a/wandb/sdk/wandb_init.py b/wandb/sdk/wandb_init.py index c8fce26450d..ddd1f273058 100644 --- a/wandb/sdk/wandb_init.py +++ b/wandb/sdk/wandb_init.py @@ -752,6 +752,11 @@ def init(self) -> Union[Run, RunDisabled, None]: # noqa: C901 # as the run is not upserted for k, v in self.init_artifact_config.items(): run.config.update({k: v}, allow_val_change=True) + job_artifact = run._launch_artifact_mapping.get( + wandb.util.LAUNCH_JOB_ARTIFACT_SLOT_NAME + ) + if job_artifact: + run.use_artifact(job_artifact) self.backend = backend self._reporter.set_context(run=run) diff --git a/wandb/sdk/wandb_run.py b/wandb/sdk/wandb_run.py index ad9fe5c9de7..e44392503d7 100644 --- a/wandb/sdk/wandb_run.py +++ b/wandb/sdk/wandb_run.py @@ -2043,6 +2043,12 @@ def _on_ready(self) -> None: self._freeze() def _log_job(self) -> None: + # don't produce a job if the run is sourced from a job + if ( + self._launch_artifact_mapping.get(wandb.util.LAUNCH_JOB_ARTIFACT_SLOT_NAME) + is not None + ): + return artifact = None input_types = TypeRegistry.type_of(self.config.as_dict()).to_json() output_types = TypeRegistry.type_of(self.summary._as_dict()).to_json() diff --git a/wandb/util.py b/wandb/util.py index 8b02d2e03a6..200dcee5c9f 100644 --- a/wandb/util.py +++ b/wandb/util.py @@ -79,6 +79,8 @@ PLATFORM_DARWIN = "darwin" PLATFORM_UNKNOWN = "unknown" +LAUNCH_JOB_ARTIFACT_SLOT_NAME = "_wandb_job" + def get_platform_name() -> str: if sys.platform.startswith("win"):