• Русский
  • Создание Workbench

    Предварительные требования

    • Убедитесь, что у вас настроен и подключён к кластеру kubectl.
    • Убедитесь, что вы создали PVC.
    CreatePVC
    1. Войдите в систему и перейдите на страницу Alauda Container Platform.
    2. Нажмите Storage > PersistentVolumeClaims, чтобы перейти на страницу списка PVC.
    3. Найдите кнопку Create PVC, нажмите Create и введите необходимую информацию.

    Создание Workbench через веб-консоль

    Процедура

    Войдите в систему и перейдите на страницу Alauda AI.

    Нажмите Workbench, чтобы перейти на страницу списка Workbench.

    Найдите кнопку Create, нажмите Create, вы перейдёте к форме создания, где сможете создать workbench, заполнив информацию.

    Подключение к Workbench

    После создания экземпляра workbench нажмите Workbench в левой навигационной панели; ваш экземпляр workbench должен появиться в списке. Когда статус станет Running, нажмите кнопку Connect, чтобы войти в workbench.

    INFO

    У нас есть встроенные ресурсы WorkspaceKind, готовые к использованию из коробки; вы можете увидеть два варианта в выпадающем меню.

    Следующие дополнительные образы workbench доступны, но не встроены в платформу по умолчанию:

    Если вы хотите использовать эти образы, сначала необходимо вручную синхронизировать их с вашим собственным реестром образов (например, с помощью инструмента skopeo).

    Руководство по скрипту синхронизации образов DockerHub

    sync-from-dockerhub.sh — это автоматизированный инструмент для синхронизации определённых образов DockerHub (особенно с очень большим размером, например, когда один слой превышает 7 ГБ) в приватный реестр образов (например, Harbor).
    Поскольку образы большого размера очень подвержены ошибкам Out-Of-Memory (OOM) или таймаутам при прямой передаче (через pipeline или память) из-за сетевых колебаний, этот скрипт использует стратегию ретрансляции: загрузка в локальный кэш -> экспорт в tar-архив -> загрузка из tar-архива в целевой реестр. Это обеспечивает стабильную синхронизацию даже для файлов размером в десятки гигабайт. Кроме того, реализован механизм автоматической очистки временных файлов после завершения задачи или при возникновении ошибок, что защищает ваше дисковое пространство.

    Предварительные требования для скрипта

    Перед запуском скрипта убедитесь, что на машине, где вы его запускаете, установлены и доступны следующие инструменты:

    • bash (окружение выполнения)
    • nerdctl (для загрузки образов и экспорта слоёв в tar-архивы)
    • skopeo (для загрузки tar-архивов образов в целевой приватный реестр)

    Конфигурация переменных окружения

    Скрипт выполняет синхронизацию, считывая переменные окружения, что обеспечивает гибкость использования без необходимости менять код.

    Обязательные параметры (конфигурация целевого приватного реестра)

    Переменная окруженияОписаниеПример значения
    TARGET_REGISTRYАдрес целевого приватного реестра образовbuild-harbor.alauda.cn
    TARGET_PROJECTКонкретный проект/неймспейс в целевом реестре для хранения образовmlops/workbench-images
    TARGET_USERИмя пользователя для входа в целевой реестрadmin
    TARGET_PASSWORDПароль для входа в целевой реестрYourSecretPassword

    Необязательные параметры (конфигурация исходного DockerHub)

    Чтобы избежать ограничения по количеству запросов (Rate Limit) DockerHub при загрузке большого количества образов, можно указать свои учётные данные DockerHub для входа перед загрузкой. Если это не требуется, оставьте поля пустыми.

    Переменная окруженияОписаниеПример значения
    DOCKERHUB_USERИмя пользователя DockerHubyour_dockerhub_account
    DOCKERHUB_PASSWORDПароль DockerHub или Access Tokendckr_pat_xxxxxx...

    Пример 1: Базовое использование (наиболее распространённый вариант)

    Если вам нужно только синхронизировать образы, определённые в скрипте, в ваш приватный Harbor:

    # 1. Экспорт переменных окружения для целевого реестра
    export TARGET_REGISTRY="build-harbor.alauda.cn"
    export TARGET_PROJECT="mlops/workbench-images"
    export TARGET_USER="admin"
    export TARGET_PASSWORD="YourHarborPassword"
    
    # 2. Дать права на выполнение скрипта (если ещё не сделано)
    chmod +x ./sync-from-dockerhub.sh
    
    # 3. Запустить синхронизацию
    ./sync-from-dockerhub.sh

    Пример 2: Запуск однострочной командой (подходит для CI-сред)

    Можно объявить переменные окружения и запустить скрипт в одной строке. Такой способ не загрязняет текущие переменные окружения Shell:

    TARGET_REGISTRY="build-harbor.alauda.cn" \
    TARGET_PROJECT="mlops/workbench-images" \
    TARGET_USER="admin" \
    TARGET_PASSWORD="YourHarborPassword" \
    ./sync-from-dockerhub.sh

    Пример 3: Полный запуск с аутентификацией DockerHub (для предотвращения Rate-Limit)

    Если вы часто загружаете образы с одной машины, DockerHub может отклонять запросы. В этом случае укажите свои учётные данные DockerHub:

    export TARGET_REGISTRY="build-harbor.alauda.cn"
    export TARGET_PROJECT="mlops/workbench-images"
    export TARGET_USER="admin"
    export TARGET_PASSWORD="YourHarborPassword"
    
    export DOCKERHUB_USER="alaudadockerhub"
    export DOCKERHUB_PASSWORD="dckr_pat_xxx_your_token_xxx"
    
    ./sync-from-dockerhub.sh

    Устранение неполадок и примечания

    1. Дисковое пространство: Поскольку скрипт временно сохраняет очень большие образы (например, 13 ГБ) в виде tar-архивов, убедитесь, что в каталоге /tmp вашей системы (или в корневом разделе, на котором он расположен) достаточно свободного места (рекомендуется не менее 30 ГБ). По умолчанию скрипт использует каталог /tmp/workbench-images-export-from-hub для промежуточного хранения.
    2. Таймауты передачи: В текущем скрипте установлен таймаут 120 минут (SKOPEO_TIMEOUT="120m") для загрузки больших файлов. Если процесс прерывается из-за очень низкой скорости сети, вы можете изменить это значение в начале скрипта любым текстовым редактором.
    3. Изменение списка образов: Если есть образы, которые вы не хотите синхронизировать, просто откройте sync-from-dockerhub.sh и закомментируйте соответствующие строки в массиве WORKBENCH_IMAGES с помощью # (аналогично тому, как были отфильтрованы минимальные образы в sync.sh).

    После того как образ появится в вашем реестре, вам также нужно добавить соответствующую конфигурацию в поле imageConfig ресурса WorkspaceKind, который вы планируете использовать. Ниже приведён пример патча YAML, добавляющего новую конфигурацию образа в существующий WorkspaceKind:

    add-llmcompressor-image-patch.json
    [
      {
        "op": "add",
        "path": "/spec/podTemplate/options/imageConfig/values/-",
        "value": {
          "id": "jupyter-pytorch-llmcompressor-cuda-py312",
          "spawner": {
            "displayName": "Jupyter | PyTorch LLM Compressor | CUDA | Python 3.12",
            "description": "JupyterLab with PyTorch and LLM Compressor for CUDA",
            "labels": [
              {
                "key": "python_version",
                "value": "3.12"
              },
              {
                "key": "framework",
                "value": "pytorch"
              },
              {
                "key": "accelerator",
                "value": "cuda"
              }
            ]
          },
          "spec": {
            "image": "build-harbor.alauda.cn/mlops/workbench-images/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9:3.4_ea1-v1.41",
            "imagePullPolicy": "IfNotPresent",
            "ports": [
              {
                "id": "jupyterlab",
                "displayName": "JupyterLab",
                "port": 8888,
                "protocol": "HTTP"
              }
            ]
          }
        }
      }
    ]

    Вы можете применить патч к используемому WorkspaceKind командой, похожей на следующую:

    kubectl patch workspacekind jupyterlab-internal-3-4-ea1-v1-41 \
      --type=json \
      --patch-file add-llmcompressor-image-patch.json \
      -o yaml

    Эта команда применит JSON-патч к указанному WorkspaceKind и обновит его imageConfig, чтобы новый образ workbench стал доступен в интерфейсе создания workbench.

    На практике вы можете адаптировать поля name, image и description в соответствии с образом, который вы синхронизировали, и соглашениями об именах в вашем кластере.

    INFO

    Также у нас встроены некоторые опции ресурсов, которые вы можете увидеть в выпадающем меню.