mirror of https://github.com/kubeflow/katib.git
Compare commits
23 Commits
Author | SHA1 | Date |
---|---|---|
|
fe7a35dffa | |
|
dd107108b5 | |
|
8e887b8719 | |
|
5d70808886 | |
|
ba2cf7d1ec | |
|
73b8c5c029 | |
|
5cd9592335 | |
|
9421f2322b | |
|
1ebd5e4453 | |
|
c9513c633d | |
|
dd4acfc2ce | |
|
349b571541 | |
|
8e965f11d8 | |
|
6578306795 | |
|
54764d6aa4 | |
|
db4b68bf56 | |
|
1f76bb3bbf | |
|
4884253067 | |
|
9e430ceaf5 | |
|
c18035e104 | |
|
3c88967299 | |
|
338a5c107b | |
|
302020c29e |
|
@ -1,5 +1,5 @@
|
|||
# Reusable workflows for publishing Katib images.
|
||||
name: Build And Publish Images
|
||||
name: Build and Publish Images
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
@ -21,31 +21,50 @@ on:
|
|||
|
||||
jobs:
|
||||
build-and-publish:
|
||||
name: Publish Image
|
||||
name: Build and Publish Images
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Docker Login
|
||||
# Trigger workflow only for kubeflow/katib repository with specific branch (master, release-.*) or tag (v.*).
|
||||
if: >-
|
||||
github.repository == 'kubeflow/katib' &&
|
||||
(github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release-') || startsWith(github.ref, 'refs/tags/v'))
|
||||
- name: Set Publish Condition
|
||||
id: publish-condition
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ "${{ github.repository }}" == 'kubeflow/katib' && \
|
||||
( "${{ github.ref }}" == 'refs/heads/master' || \
|
||||
"${{ github.ref }}" =~ ^refs/heads/release- || \
|
||||
"${{ github.ref }}" =~ ^refs/tags/v ) ]]; then
|
||||
echo "should_publish=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "should_publish=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: GHCR Login
|
||||
if: steps.publish-condition.outputs.should_publish == 'true'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: DockerHub Login
|
||||
if: steps.publish-condition.outputs.should_publish == 'true'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: docker.io
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Publish Component ${{ inputs.component-name }}
|
||||
# Trigger workflow only for kubeflow/katib repository with specific branch (master, release-.*) or tag (v.*).
|
||||
if: >-
|
||||
github.repository == 'kubeflow/katib' &&
|
||||
(github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release-') || startsWith(github.ref, 'refs/tags/v'))
|
||||
if: steps.publish-condition.outputs.should_publish == 'true'
|
||||
id: publish
|
||||
uses: ./.github/workflows/template-publish-image
|
||||
with:
|
||||
image: docker.io/kubeflowkatib/${{ inputs.component-name }}
|
||||
image: |
|
||||
ghcr.io/kubeflow/katib/${{ inputs.component-name }}
|
||||
docker.io/kubeflowkatib/${{ inputs.component-name }}
|
||||
dockerfile: ${{ inputs.dockerfile }}
|
||||
platforms: ${{ inputs.platforms }}
|
||||
push: true
|
||||
|
@ -54,7 +73,9 @@ jobs:
|
|||
if: steps.publish.outcome == 'skipped'
|
||||
uses: ./.github/workflows/template-publish-image
|
||||
with:
|
||||
image: docker.io/kubeflowkatib/${{ inputs.component-name }}
|
||||
image: |
|
||||
ghcr.io/kubeflow/katib/${{ inputs.component-name }}
|
||||
docker.io/kubeflowkatib/${{ inputs.component-name }}
|
||||
dockerfile: ${{ inputs.dockerfile }}
|
||||
platforms: ${{ inputs.platforms }}
|
||||
push: false
|
||||
|
|
|
@ -21,7 +21,12 @@ jobs:
|
|||
uses: ./.github/workflows/template-setup-e2e-test
|
||||
with:
|
||||
kubernetes-version: ${{ matrix.kubernetes-version }}
|
||||
|
||||
|
||||
- name: Install Katib SDK with extra requires
|
||||
shell: bash
|
||||
run: |
|
||||
pip install --prefer-binary -e 'sdk/python/v1beta1[huggingface]'
|
||||
|
||||
- name: Run e2e test with tune API
|
||||
uses: ./.github/workflows/template-e2e-test
|
||||
with:
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
name: Free-Up Disk Space
|
||||
description: Remove Non-Essential Tools And Move Docker Data Directory to /mnt/docker
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
# This step is a Workaround to avoid the "No space left on device" error.
|
||||
# ref: https://github.com/actions/runner-images/issues/2840
|
||||
- name: Remove unnecessary files
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Disk usage before cleanup:"
|
||||
df -hT
|
||||
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf /usr/local/share/boost
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /usr/local/share/powershell
|
||||
sudo rm -rf /usr/share/swift
|
||||
|
||||
echo "Disk usage after cleanup:"
|
||||
df -hT
|
||||
|
||||
- name: Prune docker images
|
||||
shell: bash
|
||||
run: |
|
||||
docker image prune -a -f
|
||||
docker system df
|
||||
df -hT
|
||||
|
||||
- name: Move docker data directory
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Stopping docker service ..."
|
||||
sudo systemctl stop docker
|
||||
DOCKER_DEFAULT_ROOT_DIR=/var/lib/docker
|
||||
DOCKER_ROOT_DIR=/mnt/docker
|
||||
echo "Moving ${DOCKER_DEFAULT_ROOT_DIR} -> ${DOCKER_ROOT_DIR}"
|
||||
sudo mv ${DOCKER_DEFAULT_ROOT_DIR} ${DOCKER_ROOT_DIR}
|
||||
echo "Creating symlink ${DOCKER_DEFAULT_ROOT_DIR} -> ${DOCKER_ROOT_DIR}"
|
||||
sudo ln -s ${DOCKER_ROOT_DIR} ${DOCKER_DEFAULT_ROOT_DIR}
|
||||
echo "$(sudo ls -l ${DOCKER_DEFAULT_ROOT_DIR})"
|
||||
echo "Starting docker service ..."
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl start docker
|
||||
echo "Docker service status:"
|
||||
sudo systemctl --no-pager -l -o short status docker
|
|
@ -17,19 +17,8 @@ runs:
|
|||
steps:
|
||||
# This step is a Workaround to avoid the "No space left on device" error.
|
||||
# ref: https://github.com/actions/runner-images/issues/2840
|
||||
- name: Remove unnecessary files
|
||||
shell: bash
|
||||
run: |
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf "/usr/local/share/boost"
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /usr/local/share/powershell
|
||||
sudo rm -rf /usr/share/swift
|
||||
|
||||
echo "Disk usage after cleanup:"
|
||||
df -h
|
||||
- name: Free-Up Disk Space
|
||||
uses: ./.github/workflows/free-up-disk-space
|
||||
|
||||
- name: Setup kubectl
|
||||
uses: azure/setup-kubectl@v4
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
name: Re-Run PR Tests
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
rerun_pr_tests:
|
||||
name: rerun_pr_tests
|
||||
if: ${{ github.event.issue.pull_request }}
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: estroz/rerun-actions@main
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
comment_id: ${{ github.event.comment.id }}
|
217
CHANGELOG.md
217
CHANGELOG.md
|
@ -1,5 +1,222 @@
|
|||
# Changelog
|
||||
|
||||
# [v0.18.0](https://github.com/kubeflow/katib/tree/v0.18.0) (2025-03-25)
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
- Move Katib manifest image references to ghcr ([#2535](https://github.com/kubeflow/katib/pull/2535) by [@saileshd1402](https://github.com/saileshd1402))
|
||||
- Migrate docker images to ghcr ([#2531](https://github.com/kubeflow/katib/pull/2531) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- Upgrade Kubernetes to v1.31.3 ([#2478](https://github.com/kubeflow/katib/pull/2478) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Upgrade Kubernetes to v1.30.7 ([#2463](https://github.com/kubeflow/katib/pull/2463) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Drop Python 3.7 and Support Python 3.11 in the SDK ([#2337](https://github.com/kubeflow/katib/pull/2337) by [@tenzen-y](https://github.com/tenzen-y))
|
||||
|
||||
## New Features
|
||||
|
||||
### Hyperparameter Optimization for LLMs
|
||||
|
||||
- [DOCS] move llm hyperparameter optimisation design image to the proposal directory and rename it ([#2472](https://github.com/kubeflow/katib/pull/2472) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- [GSoC] Update `tune` API for LLM hyperparameters optimization ([#2393](https://github.com/kubeflow/katib/pull/2393) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- [GSoC] Create LLM Hyperparameters Optimization API Proposal ([#2333](https://github.com/kubeflow/katib/pull/2333) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
|
||||
### Support for Advanced Distributions for HPO
|
||||
|
||||
- [GSOC] `optuna` suggestion service logic update ([#2446](https://github.com/kubeflow/katib/pull/2446) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] `hyperopt` suggestion service logic update ([#2412](https://github.com/kubeflow/katib/pull/2412) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] Add validator for feasible space distribution ([#2404](https://github.com/kubeflow/katib/pull/2404) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] added Unknown distribution and convertDistribution in suggestion client ([#2403](https://github.com/kubeflow/katib/pull/2403) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] Support for various Parameter distributions in Katib ([#2334](https://github.com/kubeflow/katib/pull/2334) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSoC] Added `DistributionType` to Experiment API ([#2377](https://github.com/kubeflow/katib/pull/2377) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
|
||||
### Push-based Metrics Collector
|
||||
|
||||
- [GSoC] Provide a PyTorch MNIST Example for Push-based Metrics Collection ([#2437](https://github.com/kubeflow/katib/pull/2437) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] Compatibility Changes in Trial Controller ([#2394](https://github.com/kubeflow/katib/pull/2394) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] New Interface `report_metrics` in Python SDK ([#2371](https://github.com/kubeflow/katib/pull/2371) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] KEP for Project 6: Push-based Metrics Collection for Katib ([#2328](https://github.com/kubeflow/katib/pull/2328) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] Add New Parameter in `tune` ([#2369](https://github.com/kubeflow/katib/pull/2369) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
|
||||
### SDK Updates
|
||||
|
||||
- [SDK] Support PyTorchJob as a Trial Worker ([#2512](https://github.com/kubeflow/katib/pull/2512) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] test: Add e2e test for tune function. ([#2399](https://github.com/kubeflow/katib/pull/2399) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [SDK] improve PVC creation name error ([#2496](https://github.com/kubeflow/katib/pull/2496) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- [SDK] Fix empty list for env variables and numpy version ([#2360](https://github.com/kubeflow/katib/pull/2360) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] Explain Python version support cycle ([#2354](https://github.com/kubeflow/katib/pull/2354) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
- fix(webhook): fix validation message in experiment webhook ([#2507](https://github.com/kubeflow/katib/pull/2507) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Install typing-extensions v4.10.0 to fix Python test error ([#2504](https://github.com/kubeflow/katib/pull/2504) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- [SDK] Update `tune` API ([#2497](https://github.com/kubeflow/katib/pull/2497) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix(api): resolve all api voilation exceptions in katib api ([#2482](https://github.com/kubeflow/katib/pull/2482) by [@truc0](https://github.com/truc0))
|
||||
- fix(trial): use propagated gomega to improve debuggability. ([#2432](https://github.com/kubeflow/katib/pull/2432) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix(ui): update None Collector with Push Collector. ([#2418](https://github.com/kubeflow/katib/pull/2418) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix: Resolve errors in e2e tests for cypress in Katib UI ([#2384](https://github.com/kubeflow/katib/pull/2384) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- doc(example): fix the broken link. ([#2433](https://github.com/kubeflow/katib/pull/2433) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix: remove remaining MXNet dependency. ([#2456](https://github.com/kubeflow/katib/pull/2456) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Remove Dropout layer from ENAS Trial container to fix E2E tests ([#2455](https://github.com/kubeflow/katib/pull/2455) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] fix grpc related bugs in Python SDK ([#2398](https://github.com/kubeflow/katib/pull/2398) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [SDK] Fix types error ([#2424](https://github.com/kubeflow/katib/pull/2424) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix: remove the dependency of `protocmp` in `google.golang.org/protobuf/testing/protocmp`. ([#2391](https://github.com/kubeflow/katib/pull/2391) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Fix TestReconcileBatchJob ([#2350](https://github.com/kubeflow/katib/pull/2350) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Fix apple silicon rosetta error when building images from the source code ([#2342](https://github.com/kubeflow/katib/pull/2342) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix katib use crds token pipeline trail template guide ([#2330](https://github.com/kubeflow/katib/pull/2330) by [@Jerry-yz](https://github.com/Jerry-yz))
|
||||
- Fix Scikit-Learn Version for Skopt Tests ([#2336](https://github.com/kubeflow/katib/pull/2336) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
## Misc
|
||||
|
||||
- Support old-style TensorFlow events (tensorboard) ([#2517](https://github.com/kubeflow/katib/pull/2517) by [@garymm](https://github.com/garymm))
|
||||
- Set experiment names at a max of 40 characters. ([#2468](https://github.com/kubeflow/katib/pull/2468) by [@AydanPirani](https://github.com/AydanPirani))
|
||||
- [CI] optimize katib ui dockerfile ([#2505](https://github.com/kubeflow/katib/pull/2505) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- Sort experiments by descending creation date by default in katib-ui ([#2498](https://github.com/kubeflow/katib/pull/2498) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- [GSoC] Add unit tests for `tune` API ([#2423](https://github.com/kubeflow/katib/pull/2423) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- Update MutatingWebhookConfiguration: Switch from objectSelector to AdmissionWebhookMatchConditions ([#2241](https://github.com/kubeflow/katib/pull/2241) by [@lianghao208](https://github.com/lianghao208))
|
||||
- chore: supporting the listen-address parameter on db-manager ([#2465](https://github.com/kubeflow/katib/pull/2465) by [@caiofralmeida](https://github.com/caiofralmeida))
|
||||
- Upgrade klog to v2 ([#2470](https://github.com/kubeflow/katib/pull/2470) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- Ignore cache exporting errors in the image building workflows ([#2487](https://github.com/kubeflow/katib/pull/2487) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- Upgrade grpcio version to v1.64.1 ([#2483](https://github.com/kubeflow/katib/pull/2483) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- docs: remove katib workflow ([#2443](https://github.com/kubeflow/katib/pull/2443) by [@gonmmarques](https://github.com/gonmmarques))
|
||||
- Migrate KatibCertGenerator to OPA CertController ([#2345](https://github.com/kubeflow/katib/pull/2345) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Promote @Electronic-Waste and @helenxie-bit as Katib reviewers ([#2439](https://github.com/kubeflow/katib/pull/2439) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update README and out-of-date docs ([#2438](https://github.com/kubeflow/katib/pull/2438) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Changes isort profile to black, to be fully compatible and adds 'pkg' dir for black and flake8 ([#2413](https://github.com/kubeflow/katib/pull/2413) by [@Ygnas](https://github.com/Ygnas))
|
||||
- Introduced error constants and replaced reflect with cmp ([#2289](https://github.com/kubeflow/katib/pull/2289) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- [Test] Refactor `inject_webhook_test.go` according to the Developer Guide ([#2401](https://github.com/kubeflow/katib/pull/2401) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Enhance pre-commit hooks with flake8 and black ([#2407](https://github.com/kubeflow/katib/pull/2407) by [@Ygnas](https://github.com/Ygnas))
|
||||
- added `Distribution` field to feasibleSpace in `api.proto` ([#2397](https://github.com/kubeflow/katib/pull/2397) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- Begin enabling pre-commit hooks ([#2242](https://github.com/kubeflow/katib/pull/2242) by [@droctothorpe](https://github.com/droctothorpe))
|
||||
- Update Instructions for Argo Workflows ([#2382](https://github.com/kubeflow/katib/pull/2382) by [@jaffe-fly](https://github.com/jaffe-fly))
|
||||
- docs: update suggestion.md ([#2387](https://github.com/kubeflow/katib/pull/2387) by [@eltociear](https://github.com/eltociear))
|
||||
- Add command to re-run GitHub Actions tests ([#2385](https://github.com/kubeflow/katib/pull/2385) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Bump Katib Python SDK to 0.17.0 version ([#2379](https://github.com/kubeflow/katib/pull/2379) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add Changelog for Katib v0.17.0 ([#2380](https://github.com/kubeflow/katib/pull/2380) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Replaced hpcloud with nxadm for tail package in Go ([#2375](https://github.com/kubeflow/katib/pull/2375) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Use ErrorList for experiment validator ([#2329](https://github.com/kubeflow/katib/pull/2329) by [@ckcd](https://github.com/ckcd))
|
||||
- Add Changelog for Katib v0.17.0-rc.1 ([#2370](https://github.com/kubeflow/katib/pull/2370) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Remove default caBundle value ([#2368](https://github.com/kubeflow/katib/pull/2368) by [@vihangm](https://github.com/vihangm))
|
||||
- Bump Katib Python SDK to 0.17.0rc1 version ([#2365](https://github.com/kubeflow/katib/pull/2365) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add unit test for `create_experiment` in the `katib_client` module ([#2325](https://github.com/kubeflow/katib/pull/2325) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Remove code generation from release script ([#2363](https://github.com/kubeflow/katib/pull/2363) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Upgrade the protobuf version to >=4.21.12,<5 ([#2358](https://github.com/kubeflow/katib/pull/2358) by [@tenzen-y](https://github.com/tenzen-y))
|
||||
- Replace gRPC code generation tool from Znly/protoc to Buf ([#2344](https://github.com/kubeflow/katib/pull/2344) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Replace already closed github.com/golang/mock with go.uber.org/mock ([#2357](https://github.com/kubeflow/katib/pull/2357) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Use cache-dependency-path in actions/setup-go for CI workflow ([#2355](https://github.com/kubeflow/katib/pull/2355) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Update Slack Invitation ([#2349](https://github.com/kubeflow/katib/pull/2349) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update GitHub template to better triage Issues ([#2335](https://github.com/kubeflow/katib/pull/2335) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add Changelog for Katib v0.17.0-rc.0 ([#2319](https://github.com/kubeflow/katib/pull/2319) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update outdated actions ([#2324](https://github.com/kubeflow/katib/pull/2324) by [@Mersho](https://github.com/Mersho))
|
||||
- Make test fields private in Go unit tests ([#2316](https://github.com/kubeflow/katib/pull/2316) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Bump Katib Python SDK to 0.17.0rc0 Version ([#2318](https://github.com/kubeflow/katib/pull/2318) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
[Full Changelog](https://github.com/kubeflow/katib/compare/v0.17.0...v0.18.0)
|
||||
|
||||
# [v0.18.0-rc.0](https://github.com/kubeflow/katib/tree/v0.18.0-rc.0) (2025-02-13)
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
- Upgrade Kubernetes to v1.31.3 ([#2478](https://github.com/kubeflow/katib/pull/2478) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Upgrade Kubernetes to v1.30.7 ([#2463](https://github.com/kubeflow/katib/pull/2463) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Drop Python 3.7 and Support Python 3.11 in the SDK ([#2337](https://github.com/kubeflow/katib/pull/2337) by [@tenzen-y](https://github.com/tenzen-y))
|
||||
|
||||
## New Features
|
||||
|
||||
### Hyperparameter Optimization for LLMs
|
||||
|
||||
- [DOCS] move llm hyperparameter optimisation design image to the proposal directory and rename it ([#2472](https://github.com/kubeflow/katib/pull/2472) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- [GSoC] Update `tune` API for LLM hyperparameters optimization ([#2393](https://github.com/kubeflow/katib/pull/2393) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- [GSoC] Create LLM Hyperparameters Optimization API Proposal ([#2333](https://github.com/kubeflow/katib/pull/2333) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
|
||||
### Support for Advanced Distributions for HPO
|
||||
|
||||
- [GSOC] `optuna` suggestion service logic update ([#2446](https://github.com/kubeflow/katib/pull/2446) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] `hyperopt` suggestion service logic update ([#2412](https://github.com/kubeflow/katib/pull/2412) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] Add validator for feasible space distribution ([#2404](https://github.com/kubeflow/katib/pull/2404) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] added Unknown distribution and convertDistribution in suggestion client ([#2403](https://github.com/kubeflow/katib/pull/2403) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSOC] Support for various Parameter distributions in Katib ([#2334](https://github.com/kubeflow/katib/pull/2334) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- [GSoC] Added `DistributionType` to Experiment API ([#2377](https://github.com/kubeflow/katib/pull/2377) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
|
||||
### Push-based Metrics Collector
|
||||
|
||||
- [GSoC] Provide a PyTorch MNIST Example for Push-based Metrics Collection ([#2437](https://github.com/kubeflow/katib/pull/2437) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] Compatibility Changes in Trial Controller ([#2394](https://github.com/kubeflow/katib/pull/2394) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] New Interface `report_metrics` in Python SDK ([#2371](https://github.com/kubeflow/katib/pull/2371) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] KEP for Project 6: Push-based Metrics Collection for Katib ([#2328](https://github.com/kubeflow/katib/pull/2328) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [GSoC] Add New Parameter in `tune` ([#2369](https://github.com/kubeflow/katib/pull/2369) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
|
||||
### SDK Updates
|
||||
|
||||
- [SDK] Support PyTorchJob as a Trial Worker ([#2512](https://github.com/kubeflow/katib/pull/2512) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] test: Add e2e test for tune function. ([#2399](https://github.com/kubeflow/katib/pull/2399) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [SDK] improve PVC creation name error ([#2496](https://github.com/kubeflow/katib/pull/2496) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- [SDK] Fix empty list for env variables and numpy version ([#2360](https://github.com/kubeflow/katib/pull/2360) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] Explain Python version support cycle ([#2354](https://github.com/kubeflow/katib/pull/2354) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
- fix(webhook): fix validation message in experiment webhook ([#2507](https://github.com/kubeflow/katib/pull/2507) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Install typing-extensions v4.10.0 to fix Python test error ([#2504](https://github.com/kubeflow/katib/pull/2504) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- [SDK] Update `tune` API ([#2497](https://github.com/kubeflow/katib/pull/2497) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix(api): resolve all api voilation exceptions in katib api ([#2482](https://github.com/kubeflow/katib/pull/2482) by [@truc0](https://github.com/truc0))
|
||||
- fix(trial): use propagated gomega to improve debuggability. ([#2432](https://github.com/kubeflow/katib/pull/2432) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix(ui): update None Collector with Push Collector. ([#2418](https://github.com/kubeflow/katib/pull/2418) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix: Resolve errors in e2e tests for cypress in Katib UI ([#2384](https://github.com/kubeflow/katib/pull/2384) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- doc(example): fix the broken link. ([#2433](https://github.com/kubeflow/katib/pull/2433) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- fix: remove remaining MXNet dependency. ([#2456](https://github.com/kubeflow/katib/pull/2456) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Remove Dropout layer from ENAS Trial container to fix E2E tests ([#2455](https://github.com/kubeflow/katib/pull/2455) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- [SDK] fix grpc related bugs in Python SDK ([#2398](https://github.com/kubeflow/katib/pull/2398) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- [SDK] Fix types error ([#2424](https://github.com/kubeflow/katib/pull/2424) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix: remove the dependency of `protocmp` in `google.golang.org/protobuf/testing/protocmp`. ([#2391](https://github.com/kubeflow/katib/pull/2391) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Fix TestReconcileBatchJob ([#2350](https://github.com/kubeflow/katib/pull/2350) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Fix apple silicon rosetta error when building images from the source code ([#2342](https://github.com/kubeflow/katib/pull/2342) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- fix katib use crds token pipeline trail template guide ([#2330](https://github.com/kubeflow/katib/pull/2330) by [@Jerry-yz](https://github.com/Jerry-yz))
|
||||
- Fix Scikit-Learn Version for Skopt Tests ([#2336](https://github.com/kubeflow/katib/pull/2336) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
## Misc
|
||||
|
||||
- Set experiment names at a max of 40 characters. ([#2468](https://github.com/kubeflow/katib/pull/2468) by [@AydanPirani](https://github.com/AydanPirani))
|
||||
- [CI] optimize katib ui dockerfile ([#2505](https://github.com/kubeflow/katib/pull/2505) by [@mahdikhashan](https://github.com/mahdikhashan))
|
||||
- Sort experiments by descending creation date by default in katib-ui ([#2498](https://github.com/kubeflow/katib/pull/2498) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- [GSoC] Add unit tests for `tune` API ([#2423](https://github.com/kubeflow/katib/pull/2423) by [@helenxie-bit](https://github.com/helenxie-bit))
|
||||
- Update MutatingWebhookConfiguration: Switch from objectSelector to AdmissionWebhookMatchConditions ([#2241](https://github.com/kubeflow/katib/pull/2241) by [@lianghao208](https://github.com/lianghao208))
|
||||
- chore: supporting the listen-address parameter on db-manager ([#2465](https://github.com/kubeflow/katib/pull/2465) by [@caiofralmeida](https://github.com/caiofralmeida))
|
||||
- Upgrade klog to v2 ([#2470](https://github.com/kubeflow/katib/pull/2470) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- Ignore cache exporting errors in the image building workflows ([#2487](https://github.com/kubeflow/katib/pull/2487) by [@Doris-xm](https://github.com/Doris-xm))
|
||||
- Upgrade grpcio version to v1.64.1 ([#2483](https://github.com/kubeflow/katib/pull/2483) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- docs: remove katib workflow ([#2443](https://github.com/kubeflow/katib/pull/2443) by [@gonmmarques](https://github.com/gonmmarques))
|
||||
- Migrate KatibCertGenerator to OPA CertController ([#2345](https://github.com/kubeflow/katib/pull/2345) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Promote @Electronic-Waste and @helenxie-bit as Katib reviewers ([#2439](https://github.com/kubeflow/katib/pull/2439) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update README and out-of-date docs ([#2438](https://github.com/kubeflow/katib/pull/2438) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Changes isort profile to black, to be fully compatible and adds 'pkg' dir for black and flake8 ([#2413](https://github.com/kubeflow/katib/pull/2413) by [@Ygnas](https://github.com/Ygnas))
|
||||
- Introduced error constants and replaced reflect with cmp ([#2289](https://github.com/kubeflow/katib/pull/2289) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- [Test] Refactor `inject_webhook_test.go` according to the Developer Guide ([#2401](https://github.com/kubeflow/katib/pull/2401) by [@Electronic-Waste](https://github.com/Electronic-Waste))
|
||||
- Enhance pre-commit hooks with flake8 and black ([#2407](https://github.com/kubeflow/katib/pull/2407) by [@Ygnas](https://github.com/Ygnas))
|
||||
- added `Distribution` field to feasibleSpace in `api.proto` ([#2397](https://github.com/kubeflow/katib/pull/2397) by [@shashank-iitbhu](https://github.com/shashank-iitbhu))
|
||||
- Begin enabling pre-commit hooks ([#2242](https://github.com/kubeflow/katib/pull/2242) by [@droctothorpe](https://github.com/droctothorpe))
|
||||
- Update Instructions for Argo Workflows ([#2382](https://github.com/kubeflow/katib/pull/2382) by [@jaffe-fly](https://github.com/jaffe-fly))
|
||||
- docs: update suggestion.md ([#2387](https://github.com/kubeflow/katib/pull/2387) by [@eltociear](https://github.com/eltociear))
|
||||
- Add command to re-run GitHub Actions tests ([#2385](https://github.com/kubeflow/katib/pull/2385) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Bump Katib Python SDK to 0.17.0 version ([#2379](https://github.com/kubeflow/katib/pull/2379) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add Changelog for Katib v0.17.0 ([#2380](https://github.com/kubeflow/katib/pull/2380) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Replaced hpcloud with nxadm for tail package in Go ([#2375](https://github.com/kubeflow/katib/pull/2375) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Use ErrorList for experiment validator ([#2329](https://github.com/kubeflow/katib/pull/2329) by [@ckcd](https://github.com/ckcd))
|
||||
- Add Changelog for Katib v0.17.0-rc.1 ([#2370](https://github.com/kubeflow/katib/pull/2370) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Remove default caBundle value ([#2368](https://github.com/kubeflow/katib/pull/2368) by [@vihangm](https://github.com/vihangm))
|
||||
- Bump Katib Python SDK to 0.17.0rc1 version ([#2365](https://github.com/kubeflow/katib/pull/2365) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add unit test for `create_experiment` in the `katib_client` module ([#2325](https://github.com/kubeflow/katib/pull/2325) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Remove code generation from release script ([#2363](https://github.com/kubeflow/katib/pull/2363) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Upgrade the protobuf version to >=4.21.12,<5 ([#2358](https://github.com/kubeflow/katib/pull/2358) by [@tenzen-y](https://github.com/tenzen-y))
|
||||
- Replace gRPC code generation tool from Znly/protoc to Buf ([#2344](https://github.com/kubeflow/katib/pull/2344) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Replace already closed github.com/golang/mock with go.uber.org/mock ([#2357](https://github.com/kubeflow/katib/pull/2357) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Use cache-dependency-path in actions/setup-go for CI workflow ([#2355](https://github.com/kubeflow/katib/pull/2355) by [@forsaken628](https://github.com/forsaken628))
|
||||
- Update Slack Invitation ([#2349](https://github.com/kubeflow/katib/pull/2349) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update GitHub template to better triage Issues ([#2335](https://github.com/kubeflow/katib/pull/2335) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Add Changelog for Katib v0.17.0-rc.0 ([#2319](https://github.com/kubeflow/katib/pull/2319) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
- Update outdated actions ([#2324](https://github.com/kubeflow/katib/pull/2324) by [@Mersho](https://github.com/Mersho))
|
||||
- Make test fields private in Go unit tests ([#2316](https://github.com/kubeflow/katib/pull/2316) by [@tariq-hasan](https://github.com/tariq-hasan))
|
||||
- Bump Katib Python SDK to 0.17.0rc0 Version ([#2318](https://github.com/kubeflow/katib/pull/2318) by [@andreyvelich](https://github.com/andreyvelich))
|
||||
|
||||
[Full Changelog](https://github.com/kubeflow/katib/compare/v0.17.0...v0.18.0-rc.0)
|
||||
|
||||
# [v0.17.0](https://github.com/kubeflow/katib/tree/v0.17.0) (2024-07-12)
|
||||
|
||||
## Breaking Changes
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
cff-version: 1.2.0
|
||||
message: "If you use Katib in your scientific publication, please cite it as below."
|
||||
authors:
|
||||
- family-names: "George"
|
||||
given-names: "Johnu"
|
||||
- family-names: "Gao"
|
||||
given-names: "Ce"
|
||||
- family-names: "Liu"
|
||||
given-names: "Richard"
|
||||
- family-names: "Liu"
|
||||
given-names: "Hou Gang"
|
||||
- family-names: "Tang"
|
||||
given-names: "Yuan"
|
||||
- family-names: "Pydipaty"
|
||||
given-names: "Ramdoot"
|
||||
- family-names: "Saha"
|
||||
given-names: "Amit Kumar"
|
||||
title: "Katib"
|
||||
type: software
|
||||
repository-code: "https://github.com/kubeflow/katib"
|
||||
preferred-citation:
|
||||
type: misc
|
||||
title: "A Scalable and Cloud-Native Hyperparameter Tuning System"
|
||||
authors:
|
||||
- family-names: "George"
|
||||
given-names: "Johnu"
|
||||
- family-names: "Gao"
|
||||
given-names: "Ce"
|
||||
- family-names: "Liu"
|
||||
given-names: "Richard"
|
||||
- family-names: "Liu"
|
||||
given-names: "Hou Gang"
|
||||
- family-names: "Tang"
|
||||
given-names: "Yuan"
|
||||
- family-names: "Pydipaty"
|
||||
given-names: "Ramdoot"
|
||||
- family-names: "Saha"
|
||||
given-names: "Amit Kumar"
|
||||
year: 2020
|
||||
url: "https://arxiv.org/abs/2006.02085"
|
||||
identifiers:
|
||||
- type: "other"
|
||||
value: "arXiv:2006.02085"
|
4
Makefile
4
Makefile
|
@ -5,7 +5,7 @@ HAS_SETUP_ENVTEST := $(shell command -v setup-envtest;)
|
|||
HAS_MOCKGEN := $(shell command -v mockgen;)
|
||||
|
||||
COMMIT := v1beta1-$(shell git rev-parse --short=7 HEAD)
|
||||
KATIB_REGISTRY := docker.io/kubeflowkatib
|
||||
KATIB_REGISTRY := ghcr.io/kubeflow/katib
|
||||
CPU_ARCH ?= linux/amd64,linux/arm64
|
||||
ENVTEST_K8S_VERSION ?= 1.31
|
||||
MOCKGEN_VERSION ?= $(shell grep 'go.uber.org/mock' go.mod | cut -d ' ' -f 2)
|
||||
|
@ -33,7 +33,7 @@ fmt:
|
|||
|
||||
lint:
|
||||
ifndef HAS_LINT
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.57.2
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.7
|
||||
$(info "golangci-lint has been installed")
|
||||
endif
|
||||
hack/verify-golangci-lint.sh
|
||||
|
|
3
OWNERS
3
OWNERS
|
@ -1,9 +1,10 @@
|
|||
approvers:
|
||||
- andreyvelich
|
||||
- gaocegege
|
||||
- tenzen-y
|
||||
- johnugeorge
|
||||
reviewers:
|
||||
- anencore94
|
||||
- c-bata
|
||||
- Electronic-Waste
|
||||
emeritus_approvers:
|
||||
- tenzen-y
|
||||
|
|
13
README.md
13
README.md
|
@ -1,15 +1,18 @@
|
|||
<h1 align="center">
|
||||
<img src="./docs/images/logo-title.png" alt="logo" width="200">
|
||||
<br>
|
||||
</h1>
|
||||
# Kubeflow Katib
|
||||
|
||||
[](https://github.com/kubeflow/katib/actions/workflows/test-go.yaml?branch=master)
|
||||
[](https://coveralls.io/github/kubeflow/katib?branch=master)
|
||||
[](https://goreportcard.com/report/github.com/kubeflow/katib)
|
||||
[](https://github.com/kubeflow/katib/releases)
|
||||
[](https://www.kubeflow.org/docs/about/community/#kubeflow-slack-channels)
|
||||
[](https://www.bestpractices.dev/projects/9941)
|
||||
|
||||
Katib is a Kubernetes-native project for automated machine learning (AutoML).
|
||||
<h1 align="center">
|
||||
<img src="./docs/images/logo-title.png" alt="logo" width="200">
|
||||
<br>
|
||||
</h1>
|
||||
|
||||
Kubeflow Katib is a Kubernetes-native project for automated machine learning (AutoML).
|
||||
Katib supports
|
||||
[Hyperparameter Tuning](https://en.wikipedia.org/wiki/Hyperparameter_optimization),
|
||||
[Early Stopping](https://en.wikipedia.org/wiki/Early_stopping) and
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Kubeflow Katib versions are expressed as `vX.Y.Z`, where X is the major version,
|
||||
Y is the minor version, and Z is the patch version, following the
|
||||
[Semantic Versioning](https://semver.org/) terminology.
|
||||
|
||||
The Kubeflow Katib project maintains release branches for the most recent two minor releases.
|
||||
Applicable fixes, including security fixes, may be backported to those two release branches,
|
||||
depending on severity and feasibility.
|
||||
|
||||
Users are encouraged to stay updated with the latest releases to benefit from security patches and
|
||||
improvements.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We're extremely grateful for security researchers and users that report vulnerabilities to the
|
||||
Kubeflow Open Source Community. All reports are thoroughly investigated by Kubeflow projects owners.
|
||||
|
||||
You can use the following ways to report security vulnerabilities privately:
|
||||
|
||||
- Using the Kubeflow Katib repository [GitHub Security Advisory](https://github.com/kubeflow/katib/security/advisories/new).
|
||||
- Using our private Kubeflow Steering Committee mailing list: ksc@kubeflow.org.
|
||||
|
||||
Please provide detailed information to help us understand and address the issue promptly.
|
||||
|
||||
## Disclosure Process
|
||||
|
||||
**Acknowledgment**: We will acknowledge receipt of your report within 10 business days.
|
||||
|
||||
**Assessment**: The Kubeflow projects owners will investigate the reported issue to determine its
|
||||
validity and severity.
|
||||
|
||||
**Resolution**: If the issue is confirmed, we will work on a fix and prepare a release.
|
||||
|
||||
**Notification**: Once a fix is available, we will notify the reporter and coordinate a public
|
||||
disclosure.
|
||||
|
||||
**Public Disclosure**: Details of the vulnerability and the fix will be published in the project's
|
||||
release notes and communicated through appropriate channels.
|
||||
|
||||
## Prevention Mechanisms
|
||||
|
||||
Kubeflow Katib employs several measures to prevent security issues:
|
||||
|
||||
**Code Reviews**: All code changes are reviewed by maintainers to ensure code quality and security.
|
||||
|
||||
**Dependency Management**: Regular updates and monitoring of dependencies (e.g. Dependabot) to
|
||||
address known vulnerabilities.
|
||||
|
||||
**Continuous Integration**: Automated testing and security checks are integrated into the CI/CD pipeline.
|
||||
|
||||
**Image Scanning**: Container images are scanned for vulnerabilities.
|
||||
|
||||
## Communication Channels
|
||||
|
||||
For the general questions please join the following resources:
|
||||
|
||||
- Kubeflow [Slack channels](https://www.kubeflow.org/docs/about/community/#kubeflow-slack-channels).
|
||||
|
||||
- Kubeflow discuss [mailing list](https://www.kubeflow.org/docs/about/community/#kubeflow-mailing-list).
|
||||
|
||||
Please **do not report** security vulnerabilities through public channels.
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Run conformance test and generate test report.
|
||||
python test/e2e/v1beta1/scripts/gh-actions/run-e2e-experiment.py --experiment-path examples/v1beta1/hp-tuning/random.yaml --namespace kf-conformance \
|
||||
--trial-pod-annotations '{"sidecar.istio.io/inject": "false"}' | tee /tmp/katib-conformance.log
|
||||
--trial-pod-labels '{"sidecar.istio.io/inject": "false"}' | tee /tmp/katib-conformance.log
|
||||
|
||||
|
||||
# Create the done file.
|
||||
|
|
|
@ -22,7 +22,7 @@ The following table shows images for the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/katib-controller</code>
|
||||
<code>ghcr.io/kubeflow/katib/katib-controller</code>
|
||||
</td>
|
||||
<td>
|
||||
Katib Controller
|
||||
|
@ -33,7 +33,7 @@ The following table shows images for the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/katib-ui</code>
|
||||
<code>ghcr.io/kubeflow/katib/katib-ui</code>
|
||||
</td>
|
||||
<td>
|
||||
Katib User Interface
|
||||
|
@ -44,7 +44,7 @@ The following table shows images for the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/katib-db-manager</code>
|
||||
<code>ghcr.io/kubeflow/katib/katib-db-manager</code>
|
||||
</td>
|
||||
<td>
|
||||
Katib DB Manager
|
||||
|
@ -87,7 +87,7 @@ The following table shows images for the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/file-metrics-collector</code>
|
||||
<code>ghcr.io/kubeflow/katib/file-metrics-collector</code>
|
||||
</td>
|
||||
<td>
|
||||
File Metrics Collector
|
||||
|
@ -98,7 +98,7 @@ The following table shows images for the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/tfevent-metrics-collector</code>
|
||||
<code>ghcr.io/kubeflow/katib/tfevent-metrics-collector</code>
|
||||
</td>
|
||||
<td>
|
||||
Tensorflow Event Metrics Collector
|
||||
|
@ -131,7 +131,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-hyperopt</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-hyperopt</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://github.com/hyperopt/hyperopt">Hyperopt</a> Suggestion
|
||||
|
@ -142,7 +142,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-skopt</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-skopt</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://github.com/scikit-optimize/scikit-optimize">Skopt</a> Suggestion
|
||||
|
@ -153,7 +153,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-optuna</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-optuna</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://github.com/optuna/optuna">Optuna</a> Suggestion
|
||||
|
@ -164,7 +164,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-goptuna</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-goptuna</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://github.com/c-bata/goptuna">Goptuna</a> Suggestion
|
||||
|
@ -175,7 +175,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-hyperband</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-hyperband</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.kubeflow.org/docs/components/katib/experiment/#hyperband">Hyperband</a> Suggestion
|
||||
|
@ -186,7 +186,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-enas</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-enas</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.kubeflow.org/docs/components/katib/experiment/#enas">ENAS</a> Suggestion
|
||||
|
@ -197,7 +197,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/suggestion-darts</code>
|
||||
<code>ghcr.io/kubeflow/katib/suggestion-darts</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.kubeflow.org/docs/components/katib/experiment/#differentiable-architecture-search-darts">DARTS</a> Suggestion
|
||||
|
@ -208,7 +208,7 @@ and the [Katib Early Stopping algorithms](https://www.kubeflow.org/docs/componen
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/earlystopping-medianstop</code>
|
||||
<code>ghcr.io/kubeflow/katib/earlystopping-medianstop</code>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.kubeflow.org/docs/components/katib/early-stopping/#median-stopping-rule">Median Stopping Rule</a>
|
||||
|
@ -240,7 +240,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/pytorch-mnist-cpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/pytorch-mnist-cpu</code>
|
||||
</td>
|
||||
<td>
|
||||
PyTorch MNIST example with printing metrics to the file or StdOut with CPU support
|
||||
|
@ -251,7 +251,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/pytorch-mnist-gpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/pytorch-mnist-gpu</code>
|
||||
</td>
|
||||
<td>
|
||||
PyTorch MNIST example with printing metrics to the file or StdOut with GPU support
|
||||
|
@ -262,7 +262,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/tf-mnist-with-summaries</code>
|
||||
<code>ghcr.io/kubeflow/katib/tf-mnist-with-summaries</code>
|
||||
</td>
|
||||
<td>
|
||||
Tensorflow MNIST example with saving metrics in the summaries
|
||||
|
@ -273,7 +273,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/xgboost-lightgbm</code>
|
||||
<code>ghcr.io/kubeflow/katib/xgboost-lightgbm</code>
|
||||
</td>
|
||||
<td>
|
||||
Distributed LightGBM example for XGBoostJob
|
||||
|
@ -306,7 +306,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/enas-cnn-cifar10-gpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/enas-cnn-cifar10-gpu</code>
|
||||
</td>
|
||||
<td>
|
||||
Keras CIFAR-10 CNN example for ENAS with GPU support
|
||||
|
@ -317,7 +317,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/enas-cnn-cifar10-cpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/enas-cnn-cifar10-cpu</code>
|
||||
</td>
|
||||
<td>
|
||||
Keras CIFAR-10 CNN example for ENAS with CPU support
|
||||
|
@ -328,7 +328,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/darts-cnn-cifar10-gpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/darts-cnn-cifar10-gpu</code>
|
||||
</td>
|
||||
<td>
|
||||
PyTorch CIFAR-10 CNN example for DARTS with GPU support
|
||||
|
@ -339,7 +339,7 @@ The following table shows images for training containers which are used in the
|
|||
</tr>
|
||||
<tr align="center">
|
||||
<td>
|
||||
<code>docker.io/kubeflowkatib/darts-cnn-cifar10-cpu</code>
|
||||
<code>ghcr.io/kubeflow/katib/darts-cnn-cifar10-cpu</code>
|
||||
</td>
|
||||
<td>
|
||||
PyTorch CIFAR-10 CNN example for DARTS with CPU support
|
||||
|
|
|
@ -180,7 +180,7 @@ SucceededCondition: Succeeded
|
|||
Previously, we had problems with Istio sidecar containers,
|
||||
check [kubeflow/issue#1081](https://github.com/kubeflow/kubeflow/issues/4742).
|
||||
In some cases, it is unable to properly download datasets in training pod.
|
||||
It was fixed by adding annotation `sidecar.istio.io/inject: false` to appropriate Trial job in Katib controller.
|
||||
It was fixed by adding label `sidecar.istio.io/inject: false` to appropriate Trial job in Katib controller.
|
||||
|
||||
Various CRD can have unified design and it is hard to understand where annotation must be specified
|
||||
to disable Istio injection for the running pods.
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# Proposals
|
||||
|
||||
Kubeflow uses the KEP process to document large scale changes to the project.
|
||||
|
||||
Details on the process (including the KEP template, recommendations, etc.) can be found at
|
||||
[kubeflow/community/proposals](https://github.com/kubeflow/community/blob/master/proposals/README.md)
|
|
@ -74,7 +74,7 @@ spec:
|
|||
- name: epochs
|
||||
container:
|
||||
name: model-training
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -62,7 +62,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -52,7 +52,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -45,7 +45,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -45,7 +45,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -44,7 +44,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -57,7 +57,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -63,7 +63,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -42,7 +42,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -63,7 +63,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -42,7 +42,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -43,7 +43,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/simple-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/simple-pbt:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pbt/pbt_test.py"
|
||||
|
|
|
@ -42,7 +42,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -42,7 +42,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -222,7 +222,7 @@
|
|||
" \"spec\": {\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
|
|
@ -210,7 +210,7 @@
|
|||
" \"restartPolicy\": \"OnFailure\",\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
@ -236,7 +236,7 @@
|
|||
" \"restartPolicy\": \"OnFailure\",\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
@ -360,7 +360,7 @@
|
|||
" \"restartPolicy\": \"OnFailure\",\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
@ -401,7 +401,7 @@
|
|||
" \"restartPolicy\": \"OnFailure\",\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
@ -600,7 +600,7 @@
|
|||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAA1ElEQVR4nN3QPwtBYRQG8EMU0e0uZLIw+QKXRZlMGC0GX8CglE0pk0VxPwQmE5YrJYPVIjYMlImSwXNiMOi97319AM/6O6fzh+g/Y5hr5mrRNByseAZba4D7EnlSN8wy3uAYXJOwDEw0ohKwD9mtxehqRLQBCnZr8GPkJ/Ll79y0m37GiIjiK2AQsGMYiIbryyvjmZO20U9gAIcjTg43GhfethOROToO+En6xRUlZhnSjd+I6BY7xVIRY79w4XapR9IOSTWWYSWUqE0xlH771R7UrULefm5U2pxVCt0AAAAASUVORK5CYII=\n",
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAA1ElEQVR4nN3QPwtBYRQG8EMU0e0uZLIw+QKXRZlMGC0GX8CglE0pk0VxPwQmE5YrJYPVIjYMlImSwXNiMOi97319AM/6O6fzh+g/Y5hr5mrRNByseAZba4D7EnlSN8wy3uAYXJOwDEw0ohKwD9mtxehqRLQBCnZr8GPkJ/Ll79y0m37GiIjiK2AQsGMYiIbryyvjmZO20U9gAIcjTg43GhfethOROToO+En6xRUlZhnSjd+I6BY7xVIRY79w4XapR9IOSTWWYSWUqE0xlH771R7UrULefm5U2pxVCt0AAAAASUVORK5CYII=",
|
||||
"text/plain": [
|
||||
"<PIL.BmpImagePlugin.BmpImageFile image mode=L size=28x28 at 0x7F9A711F33A0>"
|
||||
]
|
||||
|
|
|
@ -96,9 +96,7 @@ def horovod_mnist_hpo(
|
|||
"Launcher": {
|
||||
"replicas": 1,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {"sidecar.istio.io/inject": "false"}
|
||||
},
|
||||
"metadata": {"labels": {"sidecar.istio.io/inject": "false"}},
|
||||
"spec": {
|
||||
"containers": [
|
||||
{
|
||||
|
@ -141,9 +139,7 @@ def horovod_mnist_hpo(
|
|||
"Worker": {
|
||||
"replicas": 2,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {"sidecar.istio.io/inject": "false"}
|
||||
},
|
||||
"metadata": {"labels": {"sidecar.istio.io/inject": "false"}},
|
||||
"spec": {
|
||||
"containers": [
|
||||
{
|
||||
|
|
|
@ -46,7 +46,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: pytorch
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
@ -61,7 +61,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: pytorch
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -56,7 +56,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: tensorflow
|
||||
image: docker.io/kubeflowkatib/tf-mnist-with-summaries:latest
|
||||
image: ghcr.io/kubeflow/katib/tf-mnist-with-summaries:latest
|
||||
command:
|
||||
- "python"
|
||||
- "/opt/tf-mnist-with-summaries/mnist.py"
|
||||
|
|
|
@ -56,7 +56,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: xgboost
|
||||
image: docker.io/kubeflowkatib/xgboost-lightgbm:1.0
|
||||
image: ghcr.io/kubeflow/katib/xgboost-lightgbm:1.0
|
||||
ports:
|
||||
- containerPort: 9991
|
||||
name: xgboostjob-port
|
||||
|
@ -90,7 +90,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: xgboost
|
||||
image: docker.io/kubeflowkatib/xgboost-lightgbm:1.0
|
||||
image: ghcr.io/kubeflow/katib/xgboost-lightgbm:1.0
|
||||
ports:
|
||||
- containerPort: 9991
|
||||
name: xgboostjob-port
|
||||
|
|
|
@ -26,7 +26,7 @@ spec:
|
|||
- katib-db-manager.kubeflow:6789
|
||||
- -path
|
||||
- /katib/mnist.log
|
||||
image: kubeflowkatib/custom-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/custom-metrics-collector:latest
|
||||
imagePullPolicy: Always
|
||||
name: custom-metrics-logger-and-collector
|
||||
env:
|
||||
|
@ -67,7 +67,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -52,7 +52,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -54,7 +54,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -49,7 +49,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -60,7 +60,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/darts-cnn-cifar10-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/darts-cnn-cifar10-cpu:latest
|
||||
command:
|
||||
- python3
|
||||
- run_trial.py
|
||||
|
|
|
@ -77,7 +77,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/darts-cnn-cifar10-gpu:latest
|
||||
image: ghcr.io/kubeflow/katib/darts-cnn-cifar10-gpu:latest
|
||||
command:
|
||||
- python3
|
||||
- run_trial.py
|
||||
|
|
|
@ -139,7 +139,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/enas-cnn-cifar10-cpu:latest
|
||||
command:
|
||||
- python3
|
||||
- -u
|
||||
|
|
|
@ -136,7 +136,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/enas-cnn-cifar10-gpu:latest
|
||||
image: ghcr.io/kubeflow/katib/enas-cnn-cifar10-gpu:latest
|
||||
command:
|
||||
- python3
|
||||
- -u
|
||||
|
|
|
@ -43,7 +43,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -43,7 +43,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
" \"spec\": {\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
|
|
@ -224,7 +224,7 @@
|
|||
" \"spec\": {\n",
|
||||
" \"template\": {\n",
|
||||
" \"metadata\": {\n",
|
||||
" \"annotations\": {\n",
|
||||
" \"labels\": {\n",
|
||||
" \"sidecar.istio.io/inject\": \"false\"\n",
|
||||
" }\n",
|
||||
" },\n",
|
||||
|
|
|
@ -30,13 +30,13 @@ set this `nop` image to Metrics Collector image.
|
|||
|
||||
For example, if you are using
|
||||
[StdOut](https://www.kubeflow.org/docs/components/katib/experiment/#metrics-collector) Metrics Collector,
|
||||
`nop` image must be equal to `docker.io/kubeflowkatib/file-metrics-collector`.
|
||||
`nop` image must be equal to `ghcr.io/kubeflow/katib/file-metrics-collector`.
|
||||
|
||||
Run the following command to modify the `nop` image:
|
||||
|
||||
```bash
|
||||
kubectl patch deploy tekton-pipelines-controller -n tekton-pipelines --type='json' \
|
||||
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args/9", "value": "docker.io/kubeflowkatib/file-metrics-collector"}]'
|
||||
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args/9", "value": "ghcr.io/kubeflow/katib/file-metrics-collector"}]'
|
||||
```
|
||||
|
||||
Check that Tekton Pipelines Controller's pod was restarted:
|
||||
|
@ -54,7 +54,7 @@ Verify that `nop` image was modified:
|
|||
```bash
|
||||
$ kubectl get $(kubectl get pods -o name -n tekton-pipelines | grep tekton-pipelines-controller) -n tekton-pipelines -o yaml | grep katib
|
||||
|
||||
- docker.io/kubeflowkatib/file-metrics-collector
|
||||
- ghcr.io/kubeflow/katib/file-metrics-collector
|
||||
```
|
||||
|
||||
### Katib Controller
|
||||
|
|
|
@ -88,7 +88,7 @@ spec:
|
|||
description: Number of epochs
|
||||
steps:
|
||||
- name: model-training
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -66,7 +66,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
14
go.mod
14
go.mod
|
@ -1,6 +1,6 @@
|
|||
module github.com/kubeflow/katib
|
||||
|
||||
go 1.22.0
|
||||
go 1.23.0
|
||||
|
||||
require (
|
||||
github.com/DATA-DOG/go-sqlmock v1.5.0
|
||||
|
@ -83,7 +83,7 @@ require (
|
|||
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.1 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/google/gnostic-models v0.6.8 // indirect
|
||||
|
@ -128,15 +128,15 @@ require (
|
|||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.26.0 // indirect
|
||||
golang.org/x/crypto v0.31.0 // indirect
|
||||
golang.org/x/crypto v0.35.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||
golang.org/x/mod v0.20.0 // indirect
|
||||
golang.org/x/net v0.33.0 // indirect
|
||||
golang.org/x/oauth2 v0.21.0 // indirect
|
||||
golang.org/x/sync v0.10.0 // indirect
|
||||
golang.org/x/sys v0.28.0 // indirect
|
||||
golang.org/x/term v0.27.0 // indirect
|
||||
golang.org/x/text v0.21.0 // indirect
|
||||
golang.org/x/sync v0.11.0 // indirect
|
||||
golang.org/x/sys v0.30.0 // indirect
|
||||
golang.org/x/term v0.29.0 // indirect
|
||||
golang.org/x/text v0.22.0 // indirect
|
||||
golang.org/x/time v0.6.0 // indirect
|
||||
golang.org/x/tools v0.24.0 // indirect
|
||||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
||||
|
|
24
go.sum
24
go.sum
|
@ -243,8 +243,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
|
|||
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
|
||||
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
|
@ -728,8 +728,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
|
|||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
||||
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
|
@ -853,8 +853,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -930,13 +930,13 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
|
||||
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
||||
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
|
||||
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
|
@ -947,8 +947,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
|
|
|
@ -25,4 +25,4 @@ if [ -z "$(command -v golangci-lint)" ]; then
|
|||
fi
|
||||
|
||||
echo 'Running golangci-lint'
|
||||
golangci-lint run --timeout 5m --go 1.22
|
||||
golangci-lint run --timeout 5m --go 1.23
|
||||
|
|
|
@ -15,15 +15,15 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
katib.kubeflow.org/component: controller
|
||||
sidecar.istio.io/inject: "false"
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "8080"
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
serviceAccountName: katib-controller
|
||||
containers:
|
||||
- name: katib-controller
|
||||
image: docker.io/kubeflowkatib/katib-controller
|
||||
image: ghcr.io/kubeflow/katib/katib-controller
|
||||
command: ["./katib-controller"]
|
||||
args:
|
||||
- --katib-config=/katib-config.yaml
|
||||
|
@ -58,6 +58,15 @@ spec:
|
|||
name: katib-config
|
||||
subPath: katib-config.yaml
|
||||
readOnly: true
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
allowPrivilegeEscalation: false
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumes:
|
||||
- name: cert
|
||||
secret:
|
||||
|
|
|
@ -15,7 +15,7 @@ data:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
@ -33,7 +33,7 @@ data:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/enas-cnn-cifar10-cpu:latest
|
||||
command:
|
||||
- python3
|
||||
- -u
|
||||
|
@ -54,7 +54,7 @@ data:
|
|||
spec:
|
||||
containers:
|
||||
- name: pytorch
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
@ -68,7 +68,7 @@ data:
|
|||
spec:
|
||||
containers:
|
||||
- name: pytorch
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -15,12 +15,11 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
katib.kubeflow.org/component: db-manager
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
containers:
|
||||
- name: katib-db-manager
|
||||
image: docker.io/kubeflowkatib/katib-db-manager
|
||||
image: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
env:
|
||||
- name: DB_NAME
|
||||
value: "mysql"
|
||||
|
@ -40,3 +39,12 @@ spec:
|
|||
initialDelaySeconds: 10
|
||||
periodSeconds: 60
|
||||
failureThreshold: 5
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
allowPrivilegeEscalation: false
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
|
|
|
@ -17,9 +17,11 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
katib.kubeflow.org/component: mysql
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
securityContext:
|
||||
fsGroup: 999
|
||||
fsGroupChangePolicy: OnRootMismatch
|
||||
containers:
|
||||
- name: katib-mysql
|
||||
image: mysql:8.0.29
|
||||
|
@ -68,6 +70,16 @@ spec:
|
|||
volumeMounts:
|
||||
- name: katib-mysql
|
||||
mountPath: /var/lib/mysql
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
runAsNonRoot: true
|
||||
runAsUser: 999
|
||||
runAsGroup: 999
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumes:
|
||||
- name: katib-mysql
|
||||
persistentVolumeClaim:
|
||||
|
|
|
@ -17,8 +17,8 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
katib.kubeflow.org/component: postgres
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
annotations:
|
||||
spec:
|
||||
containers:
|
||||
- name: katib-postgres
|
||||
|
|
|
@ -15,12 +15,11 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
katib.kubeflow.org/component: ui
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
containers:
|
||||
- name: katib-ui
|
||||
image: docker.io/kubeflowkatib/katib-ui
|
||||
image: ghcr.io/kubeflow/katib/katib-ui
|
||||
command:
|
||||
- "./katib-ui"
|
||||
args:
|
||||
|
@ -33,4 +32,13 @@ spec:
|
|||
ports:
|
||||
- name: ui
|
||||
containerPort: 8080
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
allowPrivilegeEscalation: false
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
serviceAccountName: katib-ui
|
||||
|
|
|
@ -5,10 +5,10 @@ metadata:
|
|||
name: katib-webhook-cert
|
||||
spec:
|
||||
isCA: true
|
||||
commonName: $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc
|
||||
commonName: KATIB_SERVICE_NAME_PLACEHOLDER.KATIB_NAMESPACE_PLACEHOLDER.svc
|
||||
dnsNames:
|
||||
- $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc
|
||||
- $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc.cluster.local
|
||||
- KATIB_SERVICE_NAME_PLACEHOLDER.KATIB_NAMESPACE_PLACEHOLDER.svc
|
||||
- KATIB_SERVICE_NAME_PLACEHOLDER.KATIB_NAMESPACE_PLACEHOLDER.svc.cluster.local
|
||||
issuerRef:
|
||||
kind: Issuer
|
||||
name: katib-selfsigned-issuer
|
||||
|
|
|
@ -13,40 +13,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -55,4 +55,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -1,69 +1,158 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
# Namespace.
|
||||
- ../../components/namespace
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB mysql.
|
||||
- ../../components/mysql/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
# Cert-manager certificate for webhooks
|
||||
- certificate.yaml
|
||||
# Namespace.
|
||||
- ../../components/namespace
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB mysql.
|
||||
- ../../components/mysql/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
# Cert-manager certificate for webhooks
|
||||
- certificate.yaml
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
|
||||
patchesStrategicMerge:
|
||||
- patches/katib-cert-injection.yaml
|
||||
|
||||
vars:
|
||||
- fieldref:
|
||||
fieldPath: metadata.namespace
|
||||
name: KATIB_NAMESPACE
|
||||
objref:
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
- fieldref:
|
||||
fieldPath: metadata.name
|
||||
name: KATIB_SERVICE_NAME
|
||||
objref:
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
- name: KATIB_CERT_NAME
|
||||
objref:
|
||||
kind: Certificate
|
||||
group: cert-manager.io
|
||||
version: v1
|
||||
name: katib-webhook-cert
|
||||
fieldref:
|
||||
fieldpath: metadata.name
|
||||
|
||||
configurations:
|
||||
- params.yaml
|
||||
- params.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
- behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
name: katib-config
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
patches:
|
||||
- path: patches/katib-cert-injection.yaml
|
||||
replacements:
|
||||
- source:
|
||||
fieldPath: metadata.namespace
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
version: v1
|
||||
targets:
|
||||
- fieldPaths:
|
||||
- spec.commonName
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
delimiter: .
|
||||
index: 1
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- spec.dnsNames.0
|
||||
options:
|
||||
delimiter: .
|
||||
index: 1
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- spec.dnsNames.1
|
||||
options:
|
||||
delimiter: .
|
||||
index: 1
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- metadata.annotations.[cert-manager.io/inject-ca-from]
|
||||
options:
|
||||
delimiter: /
|
||||
create: true
|
||||
select:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: ValidatingWebhookConfiguration
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- metadata.annotations.[cert-manager.io/inject-ca-from]
|
||||
options:
|
||||
delimiter: /
|
||||
create: true
|
||||
select:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: MutatingWebhookConfiguration
|
||||
version: v1
|
||||
- source:
|
||||
fieldPath: metadata.name
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
version: v1
|
||||
targets:
|
||||
- fieldPaths:
|
||||
- spec.commonName
|
||||
options:
|
||||
delimiter: .
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- spec.dnsNames.0
|
||||
options:
|
||||
delimiter: .
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- spec.dnsNames.1
|
||||
options:
|
||||
delimiter: .
|
||||
select:
|
||||
group: cert-manager.io
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
version: v1
|
||||
- source:
|
||||
fieldPath: metadata.name
|
||||
kind: Certificate
|
||||
name: katib-webhook-cert
|
||||
targets:
|
||||
- fieldPaths:
|
||||
- metadata.annotations.[cert-manager.io/inject-ca-from]
|
||||
options:
|
||||
delimiter: /
|
||||
index: 1
|
||||
create: true
|
||||
select:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: ValidatingWebhookConfiguration
|
||||
version: v1
|
||||
- fieldPaths:
|
||||
- metadata.annotations.[cert-manager.io/inject-ca-from]
|
||||
options:
|
||||
delimiter: /
|
||||
index: 1
|
||||
create: true
|
||||
select:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: MutatingWebhookConfiguration
|
||||
version: v1
|
||||
|
|
|
@ -4,11 +4,11 @@ kind: ValidatingWebhookConfiguration
|
|||
metadata:
|
||||
name: katib.kubeflow.org
|
||||
annotations:
|
||||
cert-manager.io/inject-ca-from: $(KATIB_NAMESPACE)/$(KATIB_CERT_NAME)
|
||||
cert-manager.io/inject-ca-from: KATIB_NAMESPACE_PLACEHOLDER/KATIB_CERT_NAME_PLACEHOLDER
|
||||
---
|
||||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: MutatingWebhookConfiguration
|
||||
metadata:
|
||||
name: katib.kubeflow.org
|
||||
annotations:
|
||||
cert-manager.io/inject-ca-from: $(KATIB_NAMESPACE)/$(KATIB_CERT_NAME)
|
||||
cert-manager.io/inject-ca-from: KATIB_NAMESPACE_PLACEHOLDER/KATIB_CERT_NAME_PLACEHOLDER
|
||||
|
|
|
@ -15,40 +15,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -57,4 +57,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -1,45 +1,44 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
newTag: latest
|
||||
patchesStrategicMerge:
|
||||
- patches/db-manager.yaml
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
# Modify katib-mysql-secrets with parameters for the DB.
|
||||
secretGenerator:
|
||||
- name: katib-mysql-secrets
|
||||
envs:
|
||||
- secrets.env
|
||||
# Secret for webhooks certs.
|
||||
- name: katib-webhook-cert
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
secretGenerator:
|
||||
- envs:
|
||||
- secrets.env
|
||||
name: katib-mysql-secrets
|
||||
- name: katib-webhook-cert
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
- behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
name: katib-config
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
patches:
|
||||
- path: patches/db-manager.yaml
|
||||
|
|
|
@ -16,40 +16,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -58,4 +58,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
- ../katib-standalone
|
||||
# rbac for leader-election
|
||||
- leader-election-rbac.yaml
|
||||
resources:
|
||||
- ../katib-standalone
|
||||
- leader-election-rbac.yaml
|
||||
replicas:
|
||||
- name: katib-controller
|
||||
count: 2
|
||||
- count: 2
|
||||
name: katib-controller
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
behavior: replace
|
||||
files:
|
||||
- katib-config.yaml
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
- behavior: replace
|
||||
files:
|
||||
- katib-config.yaml
|
||||
name: katib-config
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
|
|
|
@ -13,40 +13,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -55,4 +55,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -8,65 +8,62 @@
|
|||
# To achieve this, run:
|
||||
#
|
||||
# `kustomize build ./manifests/v1beta1/installs/katib-openshift | oc apply -f - -l type!=local`
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB mysql.
|
||||
- ../../components/mysql/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB mysql.
|
||||
- ../../components/mysql/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
newTag: latest
|
||||
|
||||
patchesJson6902:
|
||||
# Annotate Service to delegate TLS-secret generation to OpenShift service controller
|
||||
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate_service-serving-certificate
|
||||
- target:
|
||||
group: ""
|
||||
version: v1
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
namespace: kubeflow
|
||||
path: patches/service-serving-cert.yaml
|
||||
# Annotate WebhookConfigurations to delegate `caBundle` population to OpenShift service controller
|
||||
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate-mutating-webhook_service-serving-certificate
|
||||
- target:
|
||||
group: admissionregistration.k8s.io
|
||||
version: v1
|
||||
kind: ValidatingWebhookConfiguration
|
||||
name: katib.kubeflow.org
|
||||
path: patches/webhook-inject-cabundle.yaml
|
||||
- target:
|
||||
group: admissionregistration.k8s.io
|
||||
version: v1
|
||||
kind: MutatingWebhookConfiguration
|
||||
name: katib.kubeflow.org
|
||||
path: patches/webhook-inject-cabundle.yaml
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
- behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
name: katib-config
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
patches:
|
||||
# Annotate Service to delegate TLS-secret generation to OpenShift service controller
|
||||
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate_service-serving-certificate
|
||||
- path: patches/service-serving-cert.yaml
|
||||
target:
|
||||
kind: Service
|
||||
name: katib-controller
|
||||
namespace: kubeflow
|
||||
version: v1
|
||||
# Annotate WebhookConfigurations to delegate `caBundle` population to OpenShift service controller
|
||||
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate-mutating-webhook_service-serving-certificate
|
||||
- path: patches/webhook-inject-cabundle.yaml
|
||||
target:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: ValidatingWebhookConfiguration
|
||||
name: katib.kubeflow.org
|
||||
version: v1
|
||||
- path: patches/webhook-inject-cabundle.yaml
|
||||
target:
|
||||
group: admissionregistration.k8s.io
|
||||
kind: MutatingWebhookConfiguration
|
||||
name: katib.kubeflow.org
|
||||
version: v1
|
||||
|
|
|
@ -15,40 +15,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -57,4 +57,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -1,48 +1,47 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB postgres.
|
||||
- ../../components/postgres/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
# Namespace.
|
||||
- ../../components/namespace/
|
||||
# Katib controller.
|
||||
- ../../components/controller/
|
||||
# Katib CRDs.
|
||||
- ../../components/crd/
|
||||
# Katib DB manager.
|
||||
- ../../components/db-manager/
|
||||
# Katib DB postgres.
|
||||
- ../../components/postgres/
|
||||
# Katib UI.
|
||||
- ../../components/ui/
|
||||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
newTag: latest
|
||||
patchesJson6902:
|
||||
- target:
|
||||
group: apps
|
||||
version: v1
|
||||
kind: Deployment
|
||||
name: katib-db-manager
|
||||
path: ./patches/db-manager.yaml
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
- behavior: create
|
||||
files:
|
||||
- katib-config.yaml
|
||||
name: katib-config
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
# Secret for webhooks certs.
|
||||
secretGenerator:
|
||||
- name: katib-webhook-cert
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
- name: katib-webhook-cert
|
||||
options:
|
||||
disableNameSuffixHash: true
|
||||
patches:
|
||||
- path: ./patches/db-manager.yaml
|
||||
target:
|
||||
group: apps
|
||||
kind: Deployment
|
||||
name: katib-db-manager
|
||||
version: v1
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
---
|
||||
apiVersion: config.kubeflow.org/v1beta1
|
||||
kind: KatibConfig
|
||||
init:
|
||||
|
@ -15,40 +14,40 @@ init:
|
|||
runtime:
|
||||
metricsCollectors:
|
||||
- kind: StdOut
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: File
|
||||
image: docker.io/kubeflowkatib/file-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/file-metrics-collector:latest
|
||||
- kind: TensorFlowEvent
|
||||
image: docker.io/kubeflowkatib/tfevent-metrics-collector:latest
|
||||
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 1Gi
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
- algorithmName: grid
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: hyperband
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperband:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperband:latest
|
||||
- algorithmName: bayesianoptimization
|
||||
image: docker.io/kubeflowkatib/suggestion-skopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-skopt:latest
|
||||
- algorithmName: cmaes
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: sobol
|
||||
image: docker.io/kubeflowkatib/suggestion-goptuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-goptuna:latest
|
||||
- algorithmName: multivariate-tpe
|
||||
image: docker.io/kubeflowkatib/suggestion-optuna:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-optuna:latest
|
||||
- algorithmName: enas
|
||||
image: docker.io/kubeflowkatib/suggestion-enas:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-enas:latest
|
||||
resources:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
- algorithmName: darts
|
||||
image: docker.io/kubeflowkatib/suggestion-darts:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-darts:latest
|
||||
- algorithmName: pbt
|
||||
image: docker.io/kubeflowkatib/suggestion-pbt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-pbt:latest
|
||||
persistentVolumeClaimSpec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
|
@ -57,4 +56,4 @@ runtime:
|
|||
storage: 5Gi
|
||||
earlyStoppings:
|
||||
- algorithmName: medianstop
|
||||
image: docker.io/kubeflowkatib/earlystopping-medianstop:latest
|
||||
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:latest
|
||||
|
|
|
@ -18,14 +18,14 @@ resources:
|
|||
# Katib webhooks.
|
||||
- ../../components/webhook/
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
configMapGenerator:
|
||||
- name: katib-config
|
||||
|
|
|
@ -1,56 +1,63 @@
|
|||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
resources:
|
||||
- ../katib-cert-manager
|
||||
# Kubeflow Katib components.
|
||||
- kubeflow-katib-roles.yaml
|
||||
- ui-virtual-service.yaml
|
||||
- istio-authorizationpolicy.yaml
|
||||
- ../katib-cert-manager
|
||||
# Kubeflow Katib components.
|
||||
- kubeflow-katib-roles.yaml
|
||||
- ui-virtual-service.yaml
|
||||
- istio-authorizationpolicy.yaml
|
||||
images:
|
||||
- name: docker.io/kubeflowkatib/katib-controller
|
||||
newName: docker.io/kubeflowkatib/katib-controller
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-db-manager
|
||||
newName: docker.io/kubeflowkatib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: docker.io/kubeflowkatib/katib-ui
|
||||
newName: docker.io/kubeflowkatib/katib-ui
|
||||
newTag: latest
|
||||
|
||||
patchesStrategicMerge:
|
||||
- patches/remove-namespace.yaml
|
||||
|
||||
- name: ghcr.io/kubeflow/katib/katib-controller
|
||||
newName: ghcr.io/kubeflow/katib/katib-controller
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newName: ghcr.io/kubeflow/katib/katib-db-manager
|
||||
newTag: latest
|
||||
- name: ghcr.io/kubeflow/katib/katib-ui
|
||||
newName: ghcr.io/kubeflow/katib/katib-ui
|
||||
newTag: latest
|
||||
|
||||
patches:
|
||||
# Extend RBAC permission list of katib-ui so it can
|
||||
# create SubjectAccessReview resources.
|
||||
- target:
|
||||
kind: ClusterRole
|
||||
name: katib-ui
|
||||
group: rbac.authorization.k8s.io
|
||||
version: v1
|
||||
path: patches/ui-rbac.yaml
|
||||
# Enable RBAC authz checks in UI's backend.
|
||||
- target:
|
||||
version: v1
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
path: patches/enable-ui-authz-checks.yaml
|
||||
# Allow istio sidecar injection in katib-UI Pod.
|
||||
- target:
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
path: patches/istio-sidecar-injection.yaml
|
||||
# Extend RBAC permission list of katib-ui so it can
|
||||
# create SubjectAccessReview resources.
|
||||
- path: patches/ui-rbac.yaml
|
||||
target:
|
||||
group: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: katib-ui
|
||||
version: v1
|
||||
# Enable RBAC authz checks in UI's backend.
|
||||
- path: patches/enable-ui-authz-checks.yaml
|
||||
target:
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
version: v1
|
||||
# Allow istio sidecar injection in katib-UI Pod.
|
||||
- path: patches/istio-sidecar-injection.yaml
|
||||
target:
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
- path: patches/remove-namespace.yaml
|
||||
|
||||
vars:
|
||||
- fieldref:
|
||||
fieldPath: metadata.namespace
|
||||
name: KATIB_UI_NAMESPACE
|
||||
objref:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
|
||||
configurations:
|
||||
- params.yaml
|
||||
- params.yaml
|
||||
replacements:
|
||||
- source:
|
||||
fieldPath: metadata.namespace
|
||||
group: apps
|
||||
kind: Deployment
|
||||
name: katib-ui
|
||||
version: v1
|
||||
targets:
|
||||
- fieldPaths:
|
||||
- spec.http.0.route.0.destination.host
|
||||
options:
|
||||
delimiter: .
|
||||
index: 1
|
||||
select:
|
||||
group: networking.istio.io
|
||||
kind: VirtualService
|
||||
name: katib-ui
|
||||
version: v1alpha3
|
||||
|
|
|
@ -6,5 +6,5 @@ metadata:
|
|||
spec:
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
labels:
|
||||
sidecar.istio.io/inject: "true"
|
||||
|
|
|
@ -16,6 +16,6 @@ spec:
|
|||
uri: /katib/
|
||||
route:
|
||||
- destination:
|
||||
host: katib-ui.$(KATIB_UI_NAMESPACE).svc.cluster.local
|
||||
host: katib-ui.KATIB_UI_NAMESPACE_PLACEHOLDER.svc.cluster.local
|
||||
port:
|
||||
number: 80
|
||||
|
|
|
@ -119,11 +119,11 @@ const (
|
|||
// JobKindJob is the kind of the Kubernetes Job.
|
||||
JobKindJob = "Job"
|
||||
|
||||
// AnnotationIstioSidecarInjectName is the annotation of Istio Sidecar
|
||||
AnnotationIstioSidecarInjectName = "sidecar.istio.io/inject"
|
||||
// LabelIstioSidecarInjectName is the label of Istio Sidecar
|
||||
LabelIstioSidecarInjectName = "sidecar.istio.io/inject"
|
||||
|
||||
// AnnotationIstioSidecarInjectValue is the value of Istio Sidecar annotation
|
||||
AnnotationIstioSidecarInjectValue = "false"
|
||||
// LabelIstioSidecarInjectValue is the value of Istio Sidecar label
|
||||
LabelIstioSidecarInjectValue = "false"
|
||||
|
||||
// LabelTrialTemplateConfigMapName is the label name for the Trial templates configMap
|
||||
LabelTrialTemplateConfigMapName = "katib.kubeflow.org/component"
|
||||
|
|
|
@ -483,7 +483,7 @@ func newFakeInstance() *experimentsv1beta1.Experiment {
|
|||
Containers: []corev1.Container{
|
||||
{
|
||||
Name: primaryContainer,
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
@ -619,7 +619,7 @@ func newFakeBatchJob() *batchv1.Job {
|
|||
Containers: []corev1.Container{
|
||||
{
|
||||
Name: primaryContainer,
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
|
|
@ -61,7 +61,7 @@ func TestGetRunSpecWithHP(t *testing.T) {
|
|||
Containers: []v1.Container{
|
||||
{
|
||||
Name: "training-container",
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
@ -170,7 +170,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
@ -186,7 +186,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu
|
||||
command:
|
||||
- python3
|
||||
- /opt/pytorch-mnist/mnist.py
|
||||
|
@ -207,7 +207,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
@ -337,7 +337,7 @@ func newFakeInstance() *experimentsv1beta1.Experiment {
|
|||
Containers: []v1.Container{
|
||||
{
|
||||
Name: "training-container",
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
|
|
@ -104,7 +104,7 @@ func (g *General) DesiredDeployment(s *suggestionsv1beta1.Suggestion) (*appsv1.D
|
|||
Template: corev1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: util.SuggestionLabels(s),
|
||||
Annotations: util.SuggestionAnnotations(s),
|
||||
Annotations: s.Annotations,
|
||||
},
|
||||
Spec: corev1.PodSpec{
|
||||
Containers: g.desiredContainers(s, suggestionConfigData, earlyStoppingConfigData),
|
||||
|
|
|
@ -72,15 +72,15 @@ var (
|
|||
}
|
||||
|
||||
deploymentLabels = map[string]string{
|
||||
"custom-label": "test",
|
||||
consts.LabelDeploymentName: suggestionName + "-" + suggestionAlgorithm,
|
||||
consts.LabelExperimentName: suggestionName,
|
||||
consts.LabelSuggestionName: suggestionName,
|
||||
"custom-label": "test",
|
||||
consts.LabelDeploymentName: suggestionName + "-" + suggestionAlgorithm,
|
||||
consts.LabelExperimentName: suggestionName,
|
||||
consts.LabelSuggestionName: suggestionName,
|
||||
consts.LabelIstioSidecarInjectName: consts.LabelIstioSidecarInjectValue,
|
||||
}
|
||||
|
||||
podAnnotations = map[string]string{
|
||||
"custom-annotation": "test",
|
||||
"sidecar.istio.io/inject": "false",
|
||||
"custom-annotation": "test",
|
||||
}
|
||||
|
||||
namespace = "kubeflow"
|
||||
|
|
|
@ -440,7 +440,7 @@ func newFakeTrialBatchJob(mcType commonv1beta1.CollectorKind, trialName string)
|
|||
Containers: []corev1.Container{
|
||||
{
|
||||
Name: primaryContainer,
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
Copyright 2022 The Kubeflow Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
suggestionsv1beta1 "github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1"
|
||||
"github.com/kubeflow/katib/pkg/controller.v1beta1/consts"
|
||||
)
|
||||
|
||||
// SuggestionAnnotations returns the expected suggestion annotations.
|
||||
func SuggestionAnnotations(instance *suggestionsv1beta1.Suggestion) map[string]string {
|
||||
return appendAnnotation(
|
||||
instance.Annotations,
|
||||
consts.AnnotationIstioSidecarInjectName,
|
||||
consts.AnnotationIstioSidecarInjectValue)
|
||||
}
|
||||
|
||||
func appendAnnotation(annotations map[string]string, newAnnotationName string, newAnnotationValue string) map[string]string {
|
||||
res := make(map[string]string)
|
||||
for k, v := range annotations {
|
||||
res[k] = v
|
||||
}
|
||||
res[newAnnotationName] = newAnnotationValue
|
||||
|
||||
return res
|
||||
}
|
|
@ -22,6 +22,7 @@ import (
|
|||
"github.com/kubeflow/katib/pkg/controller.v1beta1/consts"
|
||||
)
|
||||
|
||||
// SuggestionLabels returns the expected suggestion labels.
|
||||
// SuggestionLabels returns the expected suggestion labels.
|
||||
func SuggestionLabels(instance *suggestionsv1beta1.Suggestion) map[string]string {
|
||||
res := make(map[string]string)
|
||||
|
@ -31,7 +32,7 @@ func SuggestionLabels(instance *suggestionsv1beta1.Suggestion) map[string]string
|
|||
res[consts.LabelDeploymentName] = GetSuggestionDeploymentName(instance)
|
||||
res[consts.LabelExperimentName] = instance.Name
|
||||
res[consts.LabelSuggestionName] = instance.Name
|
||||
|
||||
res[consts.LabelIstioSidecarInjectName] = consts.LabelIstioSidecarInjectValue
|
||||
return res
|
||||
}
|
||||
|
||||
|
@ -45,3 +46,13 @@ func TrialLabels(instance *experimentsv1beta1.Experiment) map[string]string {
|
|||
|
||||
return res
|
||||
}
|
||||
|
||||
// AppendIstioSidecarLabel adds the Istio sidecar injection label to a labels map
|
||||
func AppendIstioSidecarLabel(labels map[string]string) map[string]string {
|
||||
res := make(map[string]string)
|
||||
for k, v := range labels {
|
||||
res[k] = v
|
||||
}
|
||||
res[consts.LabelIstioSidecarInjectName] = consts.LabelIstioSidecarInjectValue
|
||||
return res
|
||||
}
|
||||
|
|
|
@ -30,11 +30,23 @@ import api_pb2
|
|||
import rfc3339
|
||||
import tensorflow as tf
|
||||
from tensorboard.backend.event_processing.event_accumulator import EventAccumulator
|
||||
from tensorboard.backend.event_processing.tag_types import TENSORS
|
||||
from tensorboard.backend.event_processing.tag_types import SCALARS, TENSORS
|
||||
|
||||
from pkg.metricscollector.v1beta1.common import const
|
||||
|
||||
|
||||
def _should_consider(tag: str, metric_name: str, tfefile: str) -> bool:
|
||||
tfefile_parent_dir = (
|
||||
os.path.dirname(metric_name)
|
||||
if len(metric_name.split("/")) >= 2
|
||||
else os.path.dirname(tfefile)
|
||||
)
|
||||
basedir_name = os.path.dirname(tfefile)
|
||||
return tag.startswith(metric_name.split("/")[-1]) and basedir_name.endswith(
|
||||
tfefile_parent_dir
|
||||
)
|
||||
|
||||
|
||||
class TFEventFileParser:
|
||||
def __init__(self, metric_names):
|
||||
self.metric_names = metric_names
|
||||
|
@ -47,31 +59,36 @@ class TFEventFileParser:
|
|||
|
||||
def parse_summary(self, tfefile):
|
||||
metric_logs = []
|
||||
event_accumulator = EventAccumulator(tfefile, size_guidance={TENSORS: 0})
|
||||
event_accumulator = EventAccumulator(
|
||||
tfefile, size_guidance={SCALARS: 0, TENSORS: 0}
|
||||
)
|
||||
event_accumulator.Reload()
|
||||
for tag in event_accumulator.Tags()[TENSORS]:
|
||||
tags = event_accumulator.Tags()
|
||||
for tag in tags[TENSORS]:
|
||||
for m in self.metric_names:
|
||||
tfefile_parent_dir = (
|
||||
os.path.dirname(m)
|
||||
if len(m.split("/")) >= 2
|
||||
else os.path.dirname(tfefile)
|
||||
)
|
||||
basedir_name = os.path.dirname(tfefile)
|
||||
if not tag.startswith(m.split("/")[-1]) or not basedir_name.endswith(
|
||||
tfefile_parent_dir
|
||||
):
|
||||
continue
|
||||
|
||||
for tensor in event_accumulator.Tensors(tag):
|
||||
ml = api_pb2.MetricLog(
|
||||
time_stamp=rfc3339.rfc3339(
|
||||
datetime.fromtimestamp(tensor.wall_time)
|
||||
),
|
||||
metric=api_pb2.Metric(
|
||||
name=m, value=str(tf.make_ndarray(tensor.tensor_proto))
|
||||
),
|
||||
)
|
||||
metric_logs.append(ml)
|
||||
if _should_consider(tag, m, tfefile):
|
||||
for tensor in event_accumulator.Tensors(tag):
|
||||
ml = api_pb2.MetricLog(
|
||||
time_stamp=rfc3339.rfc3339(
|
||||
datetime.fromtimestamp(tensor.wall_time)
|
||||
),
|
||||
metric=api_pb2.Metric(
|
||||
name=m, value=str(tf.make_ndarray(tensor.tensor_proto))
|
||||
),
|
||||
)
|
||||
metric_logs.append(ml)
|
||||
# support old-style tensorboard metrics too
|
||||
for tag in tags[SCALARS]:
|
||||
for m in self.metric_names:
|
||||
if _should_consider(tag, m, tfefile):
|
||||
for scalar in event_accumulator.Scalars(tag):
|
||||
ml = api_pb2.MetricLog(
|
||||
time_stamp=rfc3339.rfc3339(
|
||||
datetime.fromtimestamp(scalar.wall_time)
|
||||
),
|
||||
metric=api_pb2.Metric(name=m, value=str(scalar.value)),
|
||||
)
|
||||
metric_logs.append(ml)
|
||||
|
||||
return metric_logs
|
||||
|
||||
|
|
|
@ -8,15 +8,15 @@
|
|||
"Templates": [
|
||||
{
|
||||
"Path": "defaultTrialTemplate.yaml",
|
||||
"Yaml": "apiVersion: batch/v1\nkind: Job\nspec:\n template:\n spec:\n containers:\n - name: training-container\n image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\"\n restartPolicy: Never"
|
||||
"Yaml": "apiVersion: batch/v1\nkind: Job\nspec:\n template:\n spec:\n containers:\n - name: training-container\n image: ghcr.io/kubeflow/katib/pytorch-mnist:v1beta1-45c5727\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\"\n restartPolicy: Never"
|
||||
},
|
||||
{
|
||||
"Path": "enasCPUTemplate",
|
||||
"Yaml": "apiVersion: batch/v1\nkind: Job\nspec:\n template:\n spec:\n containers:\n - name: training-container\n image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v1beta1-45c5727\n command:\n - python3\n - -u\n - RunTrial.py\n - --num_epochs=1\n - \"--architecture=\\\"${trialParameters.neuralNetworkArchitecture}\\\"\"\n - \"--nn_config=\\\"${trialParameters.neuralNetworkConfig}\\\"\"\n restartPolicy: Never"
|
||||
"Yaml": "apiVersion: batch/v1\nkind: Job\nspec:\n template:\n spec:\n containers:\n - name: training-container\n image: ghcr.io/kubeflow/katib/enas-cnn-cifar10-cpu:v1beta1-45c5727\n command:\n - python3\n - -u\n - RunTrial.py\n - --num_epochs=1\n - \"--architecture=\\\"${trialParameters.neuralNetworkArchitecture}\\\"\"\n - \"--nn_config=\\\"${trialParameters.neuralNetworkConfig}\\\"\"\n restartPolicy: Never"
|
||||
},
|
||||
{
|
||||
"Path": "pytorchJobTemplate",
|
||||
"Yaml": "apiVersion: \"kubeflow.org/v1\"\nkind: PyTorchJob\nspec:\n pytorchReplicaSpecs:\n Master:\n replicas: 1\n restartPolicy: OnFailure\n template:\n spec:\n containers:\n - name: pytorch\n image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727\n imagePullPolicy: Always\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\"\n Worker:\n replicas: 2\n restartPolicy: OnFailure\n template:\n spec:\n containers:\n - name: pytorch\n image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727\n imagePullPolicy: Always\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\""
|
||||
"Yaml": "apiVersion: \"kubeflow.org/v1\"\nkind: PyTorchJob\nspec:\n pytorchReplicaSpecs:\n Master:\n replicas: 1\n restartPolicy: OnFailure\n template:\n spec:\n containers:\n - name: pytorch\n image: ghcr.io/kubeflow/katib/pytorch-mnist:v1beta1-45c5727\n imagePullPolicy: Always\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\"\n Worker:\n replicas: 2\n restartPolicy: OnFailure\n template:\n spec:\n containers:\n - name: pytorch\n image: ghcr.io/kubeflow/katib/pytorch-mnist:v1beta1-45c5727\n imagePullPolicy: Always\n command:\n - \"python3\"\n - \"/opt/pytorch-mnist/mnist.py\"\n - \"--epochs=1\"\n - \"--lr=${trialParameters.learningRate}\"\n - \"--momentum=${trialParameters.momentum}\""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -786,11 +786,13 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
|
||||
"integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
|
||||
"version": "7.26.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
|
||||
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/highlight": "^7.24.7",
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -1169,17 +1171,19 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
|
||||
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
|
||||
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
|
||||
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
|
||||
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
|
@ -1221,25 +1225,27 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
|
||||
"integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
|
||||
"integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.25.0",
|
||||
"@babel/types": "^7.25.0"
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/types": "^7.26.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helpers/node_modules/@babel/template": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
|
||||
"integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
|
||||
"version": "7.26.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
|
||||
"integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.24.7",
|
||||
"@babel/parser": "^7.25.0",
|
||||
"@babel/types": "^7.25.0"
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/parser": "^7.26.9",
|
||||
"@babel/types": "^7.26.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
@ -1249,6 +1255,7 @@
|
|||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
|
||||
"integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"chalk": "^2.4.2",
|
||||
|
@ -1260,9 +1267,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz",
|
||||
"integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
|
||||
"integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.26.10"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
|
@ -2538,13 +2549,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz",
|
||||
"integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
|
||||
"integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.24.8",
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
"@babel/helper-string-parser": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
@ -3026,10 +3037,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -3202,10 +3214,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -4872,6 +4885,7 @@
|
|||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"color-convert": "^1.9.0"
|
||||
},
|
||||
|
@ -5113,10 +5127,11 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.7.9",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
|
||||
"integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
|
||||
"integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.0",
|
||||
|
@ -5412,9 +5427,10 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
|
@ -5710,6 +5726,7 @@
|
|||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
|
@ -6017,6 +6034,7 @@
|
|||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
|
@ -6024,7 +6042,8 @@
|
|||
"node_modules/color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/color-support": {
|
||||
"version": "1.1.3",
|
||||
|
@ -8122,6 +8141,7 @@
|
|||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
|
@ -8276,10 +8296,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -9491,6 +9512,7 @@
|
|||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
|
@ -10710,10 +10732,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/istanbul-lib-source-maps/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -11115,10 +11138,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/karma-coverage-istanbul-reporter/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -11172,10 +11196,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/karma/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -12444,10 +12469,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/node-gyp/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -14804,10 +14830,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/rimraf/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -15358,10 +15385,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/shelljs/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -15971,10 +15999,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/stylus/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -16023,6 +16052,7 @@
|
|||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^3.0.0"
|
||||
},
|
||||
|
@ -16328,10 +16358,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/test-exclude/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -16418,14 +16449,6 @@
|
|||
"tmp": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
||||
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
@ -16588,10 +16611,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tslint/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -18202,11 +18226,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"@babel/code-frame": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
|
||||
"integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
|
||||
"version": "7.26.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
|
||||
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
|
||||
"requires": {
|
||||
"@babel/highlight": "^7.24.7",
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.0.0"
|
||||
}
|
||||
},
|
||||
|
@ -18493,14 +18518,14 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-string-parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
|
||||
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ=="
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
|
||||
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="
|
||||
},
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
|
||||
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
|
||||
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="
|
||||
},
|
||||
"@babel/helper-validator-option": {
|
||||
"version": "7.24.8",
|
||||
|
@ -18532,22 +18557,22 @@
|
|||
}
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
|
||||
"integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
|
||||
"integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
|
||||
"requires": {
|
||||
"@babel/template": "^7.25.0",
|
||||
"@babel/types": "^7.25.0"
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/types": "^7.26.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/template": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
|
||||
"integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
|
||||
"version": "7.26.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
|
||||
"integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.24.7",
|
||||
"@babel/parser": "^7.25.0",
|
||||
"@babel/types": "^7.25.0"
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/parser": "^7.26.9",
|
||||
"@babel/types": "^7.26.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18556,6 +18581,7 @@
|
|||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
|
||||
"integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"chalk": "^2.4.2",
|
||||
|
@ -18564,9 +18590,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz",
|
||||
"integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA=="
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
|
||||
"integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.26.10"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
||||
"version": "7.25.0",
|
||||
|
@ -19429,13 +19458,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz",
|
||||
"integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
|
||||
"integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
|
||||
"requires": {
|
||||
"@babel/helper-string-parser": "^7.24.8",
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
"@babel/helper-string-parser": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.25.9"
|
||||
}
|
||||
},
|
||||
"@colors/colors": {
|
||||
|
@ -19740,9 +19768,9 @@
|
|||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -19873,9 +19901,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -21210,6 +21238,7 @@
|
|||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
|
@ -21374,9 +21403,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"axios": {
|
||||
"version": "1.7.9",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
|
||||
"integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
|
||||
"integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
|
@ -21617,9 +21646,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
|
@ -21820,6 +21849,7 @@
|
|||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
|
@ -22048,6 +22078,7 @@
|
|||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
|
@ -22055,7 +22086,8 @@
|
|||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"color-support": {
|
||||
"version": "1.1.3",
|
||||
|
@ -23552,7 +23584,8 @@
|
|||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "7.32.0",
|
||||
|
@ -23642,9 +23675,9 @@
|
|||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -24589,7 +24622,8 @@
|
|||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||
"dev": true
|
||||
},
|
||||
"has-property-descriptors": {
|
||||
"version": "1.0.2",
|
||||
|
@ -25459,9 +25493,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -25749,9 +25783,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -25853,9 +25887,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -26787,9 +26821,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -28465,9 +28499,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -28886,9 +28920,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -29349,9 +29383,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -29404,6 +29438,7 @@
|
|||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
|
@ -29617,9 +29652,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
|
@ -29693,11 +29728,6 @@
|
|||
"tmp": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
||||
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
@ -29808,9 +29838,9 @@
|
|||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
|
|
|
@ -407,7 +407,7 @@ init:
|
|||
runtime:
|
||||
suggestions:
|
||||
- algorithmName: random
|
||||
image: docker.io/kubeflowkatib/suggestion-hyperopt:latest
|
||||
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:latest
|
||||
`), os.FileMode(0600)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
@ -1433,7 +1433,7 @@ func newFakeBatchJob() *batchv1.Job {
|
|||
Containers: []v1.Container{
|
||||
{
|
||||
Name: "training-container",
|
||||
Image: "docker.io/kubeflowkatib/pytorch-mnist-cpu",
|
||||
Image: "ghcr.io/kubeflow/katib/pytorch-mnist-cpu",
|
||||
Command: []string{
|
||||
"python3",
|
||||
"--epochs=1",
|
||||
|
|
|
@ -68,7 +68,7 @@ fi
|
|||
|
||||
# ------------------ Change image tag ------------------
|
||||
# Change Katib image tags to the new release tag.
|
||||
make update-images OLD_PREFIX="docker.io/kubeflowkatib/" NEW_PREFIX="docker.io/kubeflowkatib/" TAG="${TAG}"
|
||||
make update-images OLD_PREFIX="ghcr.io/kubeflow/katib/" NEW_PREFIX="ghcr.io/kubeflow/katib/" TAG="${TAG}"
|
||||
|
||||
# ------------------ Publish Katib SDK ------------------
|
||||
# Remove first "v" for the SDK version.
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
# 5. Katib Trial training containers
|
||||
#
|
||||
# Run ./scripts/v1beta1/update-images.sh <OLD_PREFIX> <NEW_PREFIX> <TAG> to execute it.
|
||||
# For example, to update images from: docker.io/kubeflowkatib/ to: docker.io/private/ registry with tag: v0.12.0, run:
|
||||
# ./scripts/v1beta1/update-images.sh docker.io/kubeflowkatib/ docker.io/private/ v0.12.0
|
||||
# For example, to update images from: ghcr.io/kubeflow/katib/ to: ghcr.io/private/ registry with tag: v0.12.0, run:
|
||||
# ./scripts/v1beta1/update-images.sh ghcr.io/kubeflow/katib/ ghcr.io/private/ v0.12.0
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
|
@ -42,8 +42,8 @@ TAG=${3:-""}
|
|||
if [[ -z "$OLD_PREFIX" || -z "$NEW_PREFIX" || -z "$TAG" ]]; then
|
||||
echo "Image old prefix, new prefix, and tag must be set"
|
||||
echo -e "Usage: $0 <OLD_PREFIX> <NEW_PREFIX> <TAG>\n" 1>&2
|
||||
echo "For example, to update images from: docker.io/kubeflowkatib/ to: docker.io/private/ registry with tag: v0.12.0, run:"
|
||||
echo "$0 docker.io/kubeflowkatib/ docker.io/private/ v0.12.0"
|
||||
echo "For example, to update images from: ghcr.io/kubeflow/katib/ to: ghcr.io/private/ registry with tag: v0.12.0, run:"
|
||||
echo "$0 ghcr.io/kubeflow/katib/ ghcr.io/private/ v0.12.0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
|
@ -692,8 +692,8 @@ class KatibClient(object):
|
|||
retain_trials,
|
||||
trial_parameters,
|
||||
resources_per_trial,
|
||||
worker_pod_template_spec,
|
||||
master_pod_template_spec,
|
||||
worker_pod_template_spec,
|
||||
)
|
||||
|
||||
# Add parameters to the Katib Experiment.
|
||||
|
|
|
@ -95,12 +95,12 @@ def generate_trial_template() -> V1beta1TrialTemplate:
|
|||
"kind": "Job",
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {"annotations": {"sidecar.istio.io/inject": "false"}},
|
||||
"metadata": {"labels": {"sidecar.istio.io/inject": "false"}},
|
||||
"spec": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "training-container",
|
||||
"image": "docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.14.0",
|
||||
"image": "ghcr.io/kubeflow/katib/pytorch-mnist-cpu:v0.14.0",
|
||||
"command": [
|
||||
"python3",
|
||||
"/opt/pytorch-mnist/mnist.py",
|
||||
|
|
|
@ -56,7 +56,7 @@ if os.path.exists(katib_grpc_svc_file):
|
|||
|
||||
setuptools.setup(
|
||||
name="kubeflow-katib",
|
||||
version="0.17.0",
|
||||
version="0.18.0rc0",
|
||||
author="Kubeflow Authors",
|
||||
author_email="premnath.vel@gmail.com",
|
||||
license="Apache License Version 2.0",
|
||||
|
|
|
@ -32,7 +32,7 @@ kubectl version
|
|||
kubectl cluster-info
|
||||
|
||||
# Update Katib images with the current PULL SHA.
|
||||
make update-images OLD_PREFIX="docker.io/kubeflowkatib/" NEW_PREFIX="${ECR_REGISTRY}/${REPO_NAME}/v1beta1/" TAG="${PULL_PULL_SHA}"
|
||||
make update-images OLD_PREFIX="ghcr.io/kubeflow/katib/" NEW_PREFIX="${ECR_REGISTRY}/${REPO_NAME}/v1beta1/" TAG="${PULL_PULL_SHA}"
|
||||
|
||||
echo -e "\n The Katib will be deployed with the following configs"
|
||||
cat "manifests/v1beta1/installs/katib-standalone/kustomization.yaml"
|
||||
|
|
|
@ -30,7 +30,7 @@ TUNE_API=${2:-false}
|
|||
TRIAL_IMAGES=${3:-""}
|
||||
EXPERIMENTS=${4:-""}
|
||||
|
||||
REGISTRY="docker.io/kubeflowkatib"
|
||||
REGISTRY="ghcr.io/kubeflow/katib"
|
||||
TAG="e2e-test"
|
||||
VERSION="v1beta1"
|
||||
CMD_PREFIX="cmd"
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import argparse
|
||||
import logging
|
||||
from pprint import pformat
|
||||
|
||||
import kubeflow.katib as katib
|
||||
from kubeflow.katib import KatibClient, search
|
||||
from kubeflow.katib.types.types import TrainerResources
|
||||
from kubernetes import client
|
||||
|
@ -12,7 +14,6 @@ EXPERIMENT_TIMEOUT = 60 * 40
|
|||
# The default logging config.
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
def run_e2e_experiment_create_by_tune(
|
||||
katib_client: KatibClient,
|
||||
exp_name: str,
|
||||
|
@ -53,9 +54,8 @@ def run_e2e_experiment_create_by_tune(
|
|||
verify_experiment_results(katib_client, experiment, exp_name, exp_namespace)
|
||||
|
||||
# Print the Experiment and Suggestion.
|
||||
logging.debug(katib_client.get_experiment(exp_name, exp_namespace))
|
||||
logging.debug(katib_client.get_suggestion(exp_name, exp_namespace))
|
||||
|
||||
logging.debug("Experiment:\n%s", pformat(katib_client.get_experiment(exp_name, exp_namespace)))
|
||||
logging.debug("Suggestion:\n%s", pformat(katib_client.get_suggestion(exp_name, exp_namespace)))
|
||||
|
||||
def run_e2e_experiment_create_by_tune_pytorchjob(
|
||||
katib_client: KatibClient,
|
||||
|
@ -115,9 +115,85 @@ def run_e2e_experiment_create_by_tune_pytorchjob(
|
|||
verify_experiment_results(katib_client, experiment, exp_name, exp_namespace)
|
||||
|
||||
# Print the Experiment and Suggestion.
|
||||
logging.debug(katib_client.get_experiment(exp_name, exp_namespace))
|
||||
logging.debug(katib_client.get_suggestion(exp_name, exp_namespace))
|
||||
logging.debug("Experiment:\n%s", pformat(katib_client.get_experiment(exp_name, exp_namespace)))
|
||||
logging.debug("Suggestion:\n%s", pformat(katib_client.get_suggestion(exp_name, exp_namespace)))
|
||||
|
||||
def run_e2e_experiment_create_by_tune_with_llm_optimization(
|
||||
katib_client: KatibClient,
|
||||
exp_name: str,
|
||||
exp_namespace: str,
|
||||
):
|
||||
import transformers
|
||||
from kubeflow.storage_initializer.hugging_face import (
|
||||
HuggingFaceDatasetParams,
|
||||
HuggingFaceModelParams,
|
||||
HuggingFaceTrainerParams,
|
||||
)
|
||||
from peft import LoraConfig
|
||||
|
||||
# Create Katib Experiment and wait until it is finished.
|
||||
logging.debug("Creating Experiment: {}/{}".format(exp_namespace, exp_name))
|
||||
|
||||
# Use the test case from fine-tuning API tutorial.
|
||||
# https://www.kubeflow.org/docs/components/training/user-guides/fine-tuning/
|
||||
# Create Katib Experiment.
|
||||
# And Wait until Experiment reaches Succeeded condition.
|
||||
katib_client.tune(
|
||||
name=exp_name,
|
||||
namespace=exp_namespace,
|
||||
# BERT model URI and type of Transformer to train it.
|
||||
model_provider_parameters=HuggingFaceModelParams(
|
||||
model_uri="hf://google-bert/bert-base-cased",
|
||||
transformer_type=transformers.AutoModelForSequenceClassification,
|
||||
num_labels=5,
|
||||
),
|
||||
# In order to save test time, use 8 samples from Yelp dataset.
|
||||
dataset_provider_parameters=HuggingFaceDatasetParams(
|
||||
repo_id="yelp_review_full",
|
||||
split="train[:8]",
|
||||
),
|
||||
# Specify HuggingFace Trainer parameters.
|
||||
trainer_parameters=HuggingFaceTrainerParams(
|
||||
training_parameters=transformers.TrainingArguments(
|
||||
output_dir="test_tune_api",
|
||||
save_strategy="no",
|
||||
learning_rate = search.double(min=1e-05, max=5e-05),
|
||||
num_train_epochs=1,
|
||||
),
|
||||
# Set LoRA config to reduce number of trainable model parameters.
|
||||
lora_config=LoraConfig(
|
||||
r = search.int(min=8, max=32),
|
||||
lora_alpha=8,
|
||||
lora_dropout=0.1,
|
||||
bias="none",
|
||||
),
|
||||
),
|
||||
objective_metric_name = "train_loss",
|
||||
objective_type = "minimize",
|
||||
algorithm_name = "random",
|
||||
max_trial_count = 1,
|
||||
parallel_trial_count = 1,
|
||||
resources_per_trial=katib.TrainerResources(
|
||||
num_workers=1,
|
||||
num_procs_per_worker=1,
|
||||
resources_per_worker={"cpu": "2", "memory": "10G",},
|
||||
),
|
||||
storage_config={
|
||||
"size": "10Gi",
|
||||
"access_modes": ["ReadWriteOnce"],
|
||||
},
|
||||
retain_trials=True,
|
||||
)
|
||||
experiment = katib_client.wait_for_experiment_condition(
|
||||
exp_name, exp_namespace, timeout=EXPERIMENT_TIMEOUT
|
||||
)
|
||||
|
||||
# Verify the Experiment results.
|
||||
verify_experiment_results(katib_client, experiment, exp_name, exp_namespace)
|
||||
|
||||
# Print the Experiment and Suggestion.
|
||||
logging.debug("Experiment:\n%s", pformat(katib_client.get_experiment(exp_name, exp_namespace)))
|
||||
logging.debug("Suggestion:\n%s", pformat(katib_client.get_suggestion(exp_name, exp_namespace)))
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
|
@ -189,3 +265,19 @@ if __name__ == "__main__":
|
|||
logging.info("---------------------------------------------------------------")
|
||||
logging.info("---------------------------------------------------------------")
|
||||
katib_client.delete_experiment(exp_name, exp_namespace)
|
||||
|
||||
exp_name = "tune-example-llm-optimization"
|
||||
exp_namespace = args.namespace
|
||||
try:
|
||||
run_e2e_experiment_create_by_tune_with_llm_optimization(katib_client, exp_name, exp_namespace)
|
||||
logging.info("---------------------------------------------------------------")
|
||||
logging.info(f"E2E is succeeded for Experiment created by tune: {exp_namespace}/{exp_name}")
|
||||
except Exception as e:
|
||||
logging.info("---------------------------------------------------------------")
|
||||
logging.info(f"E2E is failed for Experiment created by tune: {exp_namespace}/{exp_name}")
|
||||
raise e
|
||||
finally:
|
||||
# Delete the Experiment.
|
||||
logging.info("---------------------------------------------------------------")
|
||||
logging.info("---------------------------------------------------------------")
|
||||
katib_client.delete_experiment(exp_name, exp_namespace)
|
||||
|
|
|
@ -30,7 +30,7 @@ TRAINING_OPERATOR_VERSION="v1.9.0"
|
|||
echo "Start to install Katib"
|
||||
|
||||
# Update Katib images with `e2e-test`.
|
||||
cd ../../../../../ && make update-images OLD_PREFIX="docker.io/kubeflowkatib/" NEW_PREFIX="docker.io/kubeflowkatib/" TAG="$E2E_TEST_IMAGE_TAG" && cd -
|
||||
cd ../../../../../ && make update-images OLD_PREFIX="ghcr.io/kubeflow/katib/" NEW_PREFIX="ghcr.io/kubeflow/katib/" TAG="$E2E_TEST_IMAGE_TAG" && cd -
|
||||
|
||||
# first declare the which kustomization file to use, by default use mysql.
|
||||
KUSTOMIZATION_FILE="../../../../../manifests/v1beta1/installs/katib-standalone/kustomization.yaml"
|
||||
|
|
|
@ -40,7 +40,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
|
@ -40,7 +40,7 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: training-container
|
||||
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
|
||||
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:latest
|
||||
command:
|
||||
- "python3"
|
||||
- "/opt/pytorch-mnist/mnist.py"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue