-
Notifications
You must be signed in to change notification settings - Fork 207
Package a local directory code_source_path for AI Runtime tasks #6110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
470ac25
Package a local directory code_source_path for AI Runtime tasks
ben-hansen-db 2acec81
aicode: only claim a local *directory* code_source_path, skip files
vinchenzo-db ef37d80
aicode: address review — drop test-only filer field, tighten helpers
vinchenzo-db b7a1a16
acceptance/ai_runtime: assert snapshot contents, filtering, and cache
vinchenzo-db a164d70
acceptance/ai_runtime: fix Git Bash path conversion on Windows
vinchenzo-db b0ee837
acceptance/ai_runtime: ruff-format list_code_snapshot.py
vinchenzo-db 3b86ff5
aicode: package snapshot into the bundle, not a home-dir cache
vinchenzo-db d89922b
aicode: overlay the code snapshot instead of writing it to disk
vinchenzo-db e306181
Merge branch 'main' into air-code-source-dir-rebase
vinchenzo-db 4e4a185
aicode: address review — validation guards + unfilterable snapshot dir
vinchenzo-db 2fc2844
aicode: drop SynthesizeRequirements; deps ride on environments spec
vinchenzo-db ac23267
aicode: guard reserved snapshot dir; rename; broaden acceptance
vinchenzo-db 91e1069
acceptance/ai_runtime: literal no-op plan + empty code_source coverage
vinchenzo-db 80d10b0
aicode: scope the .air_snapshots force-include to AI Runtime bundles
vinchenzo-db 2d06955
aicode: fix changelog fragment (no requirements.yaml; in-bundle upload)
vinchenzo-db 07cd81b
aicode: preserve the execute bit when packaging code
vinchenzo-db bfcf976
aicode: skip execute-bit test on Windows
vinchenzo-db 819b516
aicode: address review — snapshot-dir guard scope, empty snapshot, ov…
vinchenzo-db 8b65b28
aicode: trim verbose comments
vinchenzo-db 215d43d
acceptance: restructure list_code_snapshot around main()
vinchenzo-db File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| For jobs where `ai_runtime_task.code_source_path` is a relative path to a local directory, the directory is now packaged into a tarball (honoring `.gitignore` and `sync.include`/`sync.exclude`), uploaded during deployment, and `code_source_path` is rewritten to the uploaded workspace path. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| #!/usr/bin/env python3 | ||
| """ | ||
| List the entries of each AI Runtime code snapshot tarball uploaded during deploy. | ||
|
|
||
| Reads out.requests.txt, takes every ai_runtime_task.code_source_path from the | ||
| jobs/create request, exports each workspace archive via the CLI, and prints its | ||
| sorted tar entries (grouped per archive). Used to assert which local files each | ||
| snapshot includes (gitignore / sync rules), across one or more tasks. | ||
| """ | ||
|
|
||
| import gzip | ||
| import io | ||
| import os | ||
| import subprocess | ||
| import sys | ||
| import tarfile | ||
|
|
||
| from print_requests import read_json_many | ||
|
|
||
|
|
||
| def code_source_paths(requests): | ||
| """Every task's code_source_path from the jobs/create request(s).""" | ||
| result = [] | ||
| for req in requests: | ||
| body = req.get("body") | ||
| if isinstance(body, dict) and req.get("path", "").endswith("/jobs/create"): | ||
| for task in body.get("tasks", []): | ||
| art = task.get("ai_runtime_task") | ||
| if art and art.get("code_source_path"): | ||
| result.append(art["code_source_path"]) | ||
| return result | ||
|
|
||
|
|
||
| def print_entries(cli, env, remote): | ||
| local = "code_snapshot.tar.gz" | ||
| subprocess.run( | ||
| [cli, "workspace", "export", remote, "--format", "AUTO", "--file", local], | ||
| check=True, | ||
| env=env, | ||
| ) | ||
| with open(local, "rb") as f: | ||
| data = gzip.decompress(f.read()) | ||
| os.remove(local) | ||
|
|
||
| # Print the archive's sync-relative name (hash tokenized by test.toml repls) so | ||
| # multi-archive output is legible. | ||
| print(f"# {remote.split('/files/', 1)[-1]}") | ||
| with tarfile.open(fileobj=io.BytesIO(data)) as tar: | ||
| for name in sorted(tar.getnames()): | ||
| print(name) | ||
|
|
||
|
|
||
| def main(): | ||
| with open("out.requests.txt") as f: | ||
| requests = read_json_many(f.read()) | ||
|
|
||
| paths = code_source_paths(requests) | ||
| if not paths: | ||
| sys.exit("no jobs/create request with code_source_path in out.requests.txt") | ||
|
|
||
| cli = os.environ["CLI"] | ||
| # MSYS_NO_PATHCONV stops Git Bash on Windows from rewriting the /Workspace path. | ||
| env = {**os.environ, "MSYS_NO_PATHCONV": "1"} | ||
|
|
||
| # code_source_path is an absolute workspace path (/Workspace/Users/.../files/...). | ||
| # Sort so multi-task output is deterministic. | ||
| for remote in sorted(paths): | ||
| print_entries(cli, env, remote) | ||
|
|
||
|
|
||
| if __name__ == "__main__": | ||
| main() | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
29 changes: 29 additions & 0 deletions
29
acceptance/bundle/ai_runtime_task/empty_code_source/databricks.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| bundle: | ||
| name: ai-runtime-empty | ||
|
|
||
| # An unrelated force-include elsewhere in the bundle. sync.include is added to the | ||
| # file list regardless of the scoped walk, so it must not make an all-filtered code | ||
| # directory look non-empty. | ||
| sync: | ||
| include: | ||
| - assets/*.bin | ||
|
|
||
| resources: | ||
| jobs: | ||
| train: | ||
| name: "[${bundle.target}] AI Runtime training" | ||
| tasks: | ||
| - task_key: train | ||
| environment_key: default | ||
| ai_runtime_task: | ||
| experiment: my-training | ||
| code_source_path: ./src | ||
| deployments: | ||
| - command_path: src/command.sh | ||
| compute: | ||
| accelerator_type: GPU_8xH100 | ||
| accelerator_count: 8 | ||
| environments: | ||
| - environment_key: default | ||
| spec: | ||
| environment_version: "5" |
3 changes: 3 additions & 0 deletions
3
acceptance/bundle/ai_runtime_task/empty_code_source/out.test.toml
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
4 changes: 4 additions & 0 deletions
4
acceptance/bundle/ai_runtime_task/empty_code_source/output.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
|
|
||
| >>> [CLI] bundle deploy | ||
| Error: code_source_path "./src" has no files to package (all excluded by .gitignore or sync.exclude, or the directory is empty) | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| # When code_source_path resolves to a directory whose contents are all filtered out | ||
| # (here: a src/.gitignore of "*"), there is nothing to package. Deploy must fail | ||
| # with an actionable message rather than shipping an empty code archive. | ||
| # A sync.include elsewhere in the bundle must not defeat that guard (see databricks.yml). | ||
| musterr trace $CLI bundle deploy |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/empty_code_source/src/.gitignore
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| * |
2 changes: 2 additions & 0 deletions
2
acceptance/bundle/ai_runtime_task/empty_code_source/src/command.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| cd $CODE_SOURCE_PATH | ||
| python train.py |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/empty_code_source/src/train.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| print("x") |
43 changes: 43 additions & 0 deletions
43
acceptance/bundle/ai_runtime_task/local_code_source/databricks.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| bundle: | ||
| name: ai-runtime-test | ||
|
|
||
| sync: | ||
| # *.log excluded; data/*.bin force-included despite .gitignore. | ||
| exclude: | ||
|
vinchenzo-db marked this conversation as resolved.
|
||
| - "**/*.log" | ||
|
vinchenzo-db marked this conversation as resolved.
|
||
| include: | ||
| - src/data/*.bin | ||
|
|
||
| resources: | ||
| jobs: | ||
| train: | ||
| name: "[${bundle.target}] AI Runtime training" | ||
| tasks: | ||
|
vinchenzo-db marked this conversation as resolved.
|
||
| # Two AI Runtime tasks with distinct local code dirs: each is packaged into | ||
| # its own content-addressed tarball, both under the repo root's .air_snapshots. | ||
| - task_key: train | ||
| environment_key: default | ||
| ai_runtime_task: | ||
| experiment: my-training | ||
| code_source_path: ./src | ||
| deployments: | ||
| - command_path: src/command.sh | ||
| compute: | ||
| accelerator_type: GPU_8xH100 | ||
| accelerator_count: 8 | ||
| - task_key: train2 | ||
| environment_key: default | ||
| ai_runtime_task: | ||
| experiment: my-training-2 | ||
| code_source_path: ./src2 | ||
| deployments: | ||
| - command_path: src2/command.sh | ||
| compute: | ||
| accelerator_type: GPU_8xH100 | ||
| accelerator_count: 8 | ||
| environments: | ||
| - environment_key: default | ||
| spec: | ||
| environment_version: "5" | ||
| dependencies: | ||
| - torch>=2.0.0 | ||
3 changes: 3 additions & 0 deletions
3
acceptance/bundle/ai_runtime_task/local_code_source/out.test.toml
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
135 changes: 135 additions & 0 deletions
135
acceptance/bundle/ai_runtime_task/local_code_source/output.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,135 @@ | ||
|
|
||
| === deploy packages and uploads the local code sources | ||
|
|
||
| >>> [CLI] bundle deploy | ||
| Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files... | ||
| Deploying resources... | ||
| Updating deployment state... | ||
| Deployment complete! | ||
|
|
||
| === each task's tarball holds only synced files (both under the repo root .air_snapshots) | ||
|
|
||
| >>> list_code_snapshot.py | ||
| # .air_snapshots/[SNAPSHOT].tar.gz | ||
| src2/command.sh | ||
| src2/train.py | ||
| # .air_snapshots/[SNAPSHOT].tar.gz | ||
| src/.gitignore | ||
| src/command.sh | ||
| src/data/model.bin | ||
| src/train.py | ||
|
|
||
| === both code_source_paths point into the bundle .air_snapshots, command_paths rewritten, deps on environments spec | ||
|
|
||
| >>> print_requests.py --sort --del-field raw_body //.air_snapshots/ //jobs/create | ||
| { | ||
| "method": "POST", | ||
| "path": "/api/2.0/workspace-files/import-file/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/.air_snapshots/[SNAPSHOT].tar.gz", | ||
| "q": { | ||
| "overwrite": "true" | ||
| } | ||
| } | ||
| { | ||
| "method": "POST", | ||
| "path": "/api/2.0/workspace-files/import-file/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/.air_snapshots/[SNAPSHOT].tar.gz", | ||
| "q": { | ||
| "overwrite": "true" | ||
| } | ||
| } | ||
| { | ||
| "method": "POST", | ||
| "path": "/api/2.2/jobs/create", | ||
| "body": { | ||
| "deployment": { | ||
| "kind": "BUNDLE", | ||
| "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/state/metadata.json" | ||
| }, | ||
| "edit_mode": "UI_LOCKED", | ||
| "environments": [ | ||
| { | ||
| "environment_key": "default", | ||
| "spec": { | ||
| "dependencies": [ | ||
| "torch>=2.0.0" | ||
| ], | ||
| "environment_version": "5" | ||
| } | ||
| } | ||
| ], | ||
| "format": "MULTI_TASK", | ||
| "max_concurrent_runs": 1, | ||
| "name": "[default] AI Runtime training", | ||
| "queue": { | ||
| "enabled": true | ||
| }, | ||
| "tasks": [ | ||
| { | ||
| "ai_runtime_task": { | ||
| "code_source_path": "/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/.air_snapshots/[SNAPSHOT].tar.gz", | ||
| "deployments": [ | ||
| { | ||
| "command_path": "/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/src/command.sh", | ||
| "compute": { | ||
| "accelerator_count": 8, | ||
| "accelerator_type": "GPU_8xH100" | ||
| } | ||
| } | ||
| ], | ||
| "experiment": "my-training" | ||
| }, | ||
| "environment_key": "default", | ||
| "task_key": "train" | ||
| }, | ||
| { | ||
| "ai_runtime_task": { | ||
| "code_source_path": "/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/.air_snapshots/[SNAPSHOT].tar.gz", | ||
| "deployments": [ | ||
| { | ||
| "command_path": "/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/src2/command.sh", | ||
| "compute": { | ||
| "accelerator_count": 8, | ||
| "accelerator_type": "GPU_8xH100" | ||
| } | ||
| } | ||
| ], | ||
| "experiment": "my-training-2" | ||
| }, | ||
| "environment_key": "default", | ||
| "task_key": "train2" | ||
| } | ||
| ] | ||
| } | ||
| } | ||
|
|
||
| === re-planning unchanged code is a no-op (no changes) | ||
|
|
||
| >>> [CLI] bundle plan | ||
| Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged | ||
|
|
||
| === editing a file changes the snapshot hash (content-addressed name changes) | ||
|
|
||
| >>> [CLI] bundle deploy | ||
| Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files... | ||
| Deploying resources... | ||
| Updating deployment state... | ||
| Deployment complete! | ||
|
|
||
| >>> print_requests.py --sort --del-field raw_body //.air_snapshots/ | ||
| { | ||
| "method": "POST", | ||
| "path": "/api/2.0/workspace-files/import-file/Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default/files/.air_snapshots/[SNAPSHOT].tar.gz", | ||
| "q": { | ||
| "overwrite": "true" | ||
| } | ||
| } | ||
|
|
||
| === destroy removes the deployed bundle (including the synced snapshots) | ||
|
|
||
| >>> [CLI] bundle destroy --auto-approve | ||
| The following resources will be deleted: | ||
| delete resources.jobs.train | ||
|
|
||
| All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/ai-runtime-test/default | ||
|
|
||
| Deleting files... | ||
| Destroy complete! |
29 changes: 29 additions & 0 deletions
29
acceptance/bundle/ai_runtime_task/local_code_source/script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # Two AI Runtime tasks each with a local directory code_source_path. Each is | ||
| # packaged into a content-addressed tarball written into the bundle | ||
| # (.air_snapshots/, at the repo root) and uploaded by normal bundle file sync; | ||
| # code_source_path/command_path are rewritten. Pip deps ride on the job's | ||
| # environments[].spec.dependencies (no requirements.yaml is synthesized). | ||
|
|
||
| title "deploy packages and uploads the local code sources\n" | ||
| trace $CLI bundle deploy | ||
|
|
||
| title "each task's tarball holds only synced files (both under the repo root .air_snapshots)\n" | ||
| trace list_code_snapshot.py | ||
|
|
||
| title "both code_source_paths point into the bundle .air_snapshots, command_paths rewritten, deps on environments spec\n" | ||
| # --del-field raw_body drops the binary tarball upload payload (kept readable). Filters | ||
| # use a leading // so Git Bash on Windows does not path-convert them. --keep is not | ||
| # passed, so print_requests.py consumes out.requests.txt. | ||
| trace print_requests.py --sort --del-field raw_body '//.air_snapshots/' '//jobs/create' | ||
|
|
||
| title "re-planning unchanged code is a no-op (no changes)\n" | ||
| trace $CLI bundle plan | ||
|
|
||
| title "editing a file changes the snapshot hash (content-addressed name changes)\n" | ||
| update_file.py src/train.py 'print("training")' 'print("training v2")' | ||
| trace $CLI bundle deploy | ||
|
vinchenzo-db marked this conversation as resolved.
|
||
| trace print_requests.py --sort --del-field raw_body '//.air_snapshots/' | ||
|
|
||
| title "destroy removes the deployed bundle (including the synced snapshots)\n" | ||
| trace $CLI bundle destroy --auto-approve | ||
| rm out.requests.txt | ||
2 changes: 2 additions & 0 deletions
2
acceptance/bundle/ai_runtime_task/local_code_source/src/.gitignore
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| ignored_by_git.txt | ||
|
vinchenzo-db marked this conversation as resolved.
|
||
| data/ | ||
2 changes: 2 additions & 0 deletions
2
acceptance/bundle/ai_runtime_task/local_code_source/src/command.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| cd $CODE_SOURCE_PATH | ||
| python train.py |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src/data/model.bin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| weights |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src/data/notes.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| scratch |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src/debug.log
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| log |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src/ignored_by_git.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| kept |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src/train.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| print("training") |
2 changes: 2 additions & 0 deletions
2
acceptance/bundle/ai_runtime_task/local_code_source/src2/command.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| cd $CODE_SOURCE_PATH | ||
| python train.py |
1 change: 1 addition & 0 deletions
1
acceptance/bundle/ai_runtime_task/local_code_source/src2/train.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| print("train2") |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use
main()for this script