{"id":20772970,"url":"https://github.com/determined-ai/environments","last_synced_at":"2025-04-13T10:21:37.090Z","repository":{"id":37229685,"uuid":"238047554","full_name":"determined-ai/environments","owner":"determined-ai","description":"Determined AI public environments","archived":false,"fork":false,"pushed_at":"2024-08-21T00:46:56.000Z","size":436,"stargazers_count":45,"open_issues_count":7,"forks_count":40,"subscribers_count":40,"default_branch":"main","last_synced_at":"2025-03-27T01:46:51.864Z","etag":null,"topics":["deep-learning","docker","gpu-acceleration"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/determined-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-03T19:46:46.000Z","updated_at":"2025-01-08T02:47:33.000Z","dependencies_parsed_at":"2024-01-03T00:14:04.080Z","dependency_job_id":"e6509288-b59c-4c39-a3be-b080237267b8","html_url":"https://github.com/determined-ai/environments","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/determined-ai%2Fenvironments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/determined-ai%2Fenvironments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/determined-ai%2Fenvironments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/determined-ai%2Fenvironments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/determined-ai","download_url":"https://codeload.github.com/determined-ai/environments/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248696232,"owners_count":21147093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","docker","gpu-acceleration"],"created_at":"2024-11-17T12:23:45.437Z","updated_at":"2025-04-13T10:21:37.057Z","avatar_url":"https://github.com/determined-ai.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Determined AI Public Environments\n\nThis repository contains scripts and configurations used to build Determined environment images and deploy them to AWS. \nTo configure a custom image based off an existing Determined image, clone this repository and modify the \nnecessary files/scripts.\n\n\n### Files\n- `Dockerfile.cpu` is the main build script for CPU images\n- `Dockerfile.gpu` is the main build script for GPU images\n- `/scripts` contains scripts for publishing Docker images to repositories\n- `/dockerfile_scripts` contains package installation and patch helper scripts for building external packages\n- `Makefile` contains Docker build commands and top-level Docker image configurations \n  (e.g. tags, build arguments, registry info)\n  \n\n### Run\nTo build a custom image:\n- Modify an existing recipe in `Makefile` or define a new command.\n- Add/modify any additional scripts needed for the image build\n- run `make {build_name}`\n\nTo publish an image manually:\n- Add a `publish` target or modify an existing recipe\n- Change registry info (`DOCKERHUB_REGISTRY` and `NGC_REGISTRY`) in `Makefile` or specify make args\n- run `make {publish-target} DOCKERHUB_REGISTRY={registry}`\n\n### Complete development workflow for updates to environment images\nThis repository is tightly coupled with [the determined repository](https://github.com/determined-ai/determined). Changes to environment images may (and should be assumed to) affect the behavior of the MLDE. When making significant changes to the images, such as updating a deep learning framework library to a more recent version, make sure Determined can still run experiments using the new image.\n\n#### Steps to introduce an updated environment image\n1. Create a PR against this repo.\n2. Open CI workflow and approve `request-publish-dev-docker` and `request-publish-dev-cloud`. Make sure all the downstream jobs succeed. The images are now published to [the development dockerhub](https://hub.docker.com/r/determinedai/environments-dev).\n3. Review the REAMDE.md in https://github.com/determined-ai/determined/tree/main/tools/scripts . It describes the bumpenvs procedure. You are going to run a test \"drill\" of this procedure with the development images just created.\n4. Create a branch in your local clone of determined github repo. From `tools/scripts` directory run `./update-bumpenvs-yaml.py --dev bumpenvs.yaml THECOMMIT`, where THECOMMIT is _the full commit hash of the commit to your branch in environments repo_. (This corresponds to steps 3 and 4 from the `tools/scripts` README.)\n5. Run `./bumpenvs.py bumpenvs.yaml`. (This corresponds to step 6 in the `tools/scripts` README.)\n6. Push your branch _to the main determined-ai remote_. This is an important detail! Image updates, in particular ones containing version changes to DL frameworks may break functionality in Determined. In order to run the extended\ntest suite, including long-running tests, you need to push to the upstream repo and not to your fork!\n7. Approve the `request-` jobs in `test-e2e-longrunning` CI workflow. Monitor the workflow to confirm nothing is broken. If some of the end-to-end tests (or unit or integration tests), investigate!\n8. Note: not all images are currently tested with end-to-end tests in the determined repo. This is a flaw in the current system. It is prudent to run a workload with the new version of every image specified in a startup hook to confirm that the image works. We are planning to address this.\n9. After you confirmed that Determined works nicely with the new images, you can merge your PR to environments, wait for main branch CI build to complete, and follow the steps from [toos/scripts/README.md](https://github.com/determined-ai/determined/tree/main/tools/scripts/README.md) with the images published to the official dockerhub.\n10. Again, it is recommended to push your bumpenvs branch to the main determined-ai remote (and not to your fork). Open your PR from there to confirm again that all the long-running tests pass.\n\n### Multi-platform images\nWe use [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) to create multi-platform CPU images. Although `docker buildx` is more powerful than the ordinary\n`docker build`, it has a limitation: to build a multi-platform image you have to use\n`docker-container` driver that does not allow to export an image so that appears in\n`docker images` (see https://docs.docker.com/engine/reference/commandline/buildx_build/#output). You can only push an image directly to a registry (using `--push` option).\nAs a consequence, if you want to test dockerfile changes locally for one of the\nmulti-platform images (currently, Base CPU, TF 2.7 CPU, and TF 2.8 CPU), without pushing\nto a docker registry, you have to modify `Makefile` or craft your own build command to build a single-platform image.\n\nFor example, to build the base image for `linux/arm64` (to use on a Mac with M1 processor):\n```\n# the default builder uses docker driver\n# confirm this with\ndocker buildx ls\n\ndocker buildx build -f Dockerfile-default-cpu \\\n  --platform linux/arm64 \\\n \t--build-arg BASE_IMAGE=\"ubuntu:18.04\" \\\n\t--build-arg PYTHON_VERSION=\"$(PYTHON_VERSION)\" \\\n\t-t $(DOCKERHUB_REGISTRY)/$(CPU_PY_38_BASE_NAME)-$(SHORT_GIT_HASH) \\\n\t-t $(DOCKERHUB_REGISTRY)/$(CPU_PY_38_BASE_NAME)-$(VERSION) \\\n   -o type=image,push=false \\\n  .\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetermined-ai%2Fenvironments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdetermined-ai%2Fenvironments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetermined-ai%2Fenvironments/lists"}