diff --git a/admin/baize/best-practice/finetunel-llm.html b/admin/baize/best-practice/finetunel-llm.html index 623afc5548..ac9c2eced5 100644 --- a/admin/baize/best-practice/finetunel-llm.html +++ b/admin/baize/best-practice/finetunel-llm.html @@ -950,7 +950,7 @@

使用 baizectl 提交任务 --restart-policy on-failure \ -- bash -c "cd /home/jovyan/ChatGLM3/finetune_demo && CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" python finetune_hf.py data/AdvertiseGen_fix ./chatglm3-6b configs/lora.yaml" -

如果希望了解更多 baizectl 的使用说明,可以查看 baizectl 使用文档

+

如果希望了解更多 baizectl 的使用说明,可以查看 baizectl 使用文档

模型推理

在微调任务完成后,您可以使用微调的模型进行推理任务,这里您可以使用AI Lab 提供的推理服务,将输出后的模型创建为推理服务。

推理任务

diff --git a/admin/baize/developer/dataset/create-use-delete.html b/admin/baize/developer/dataset/create-use-delete.html deleted file mode 100644 index 3a3b719b10..0000000000 --- a/admin/baize/developer/dataset/create-use-delete.html +++ /dev/null @@ -1,537 +0,0 @@ - - - - - - - - - - - - -数据集列表 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

数据集列表

-

AI Lab 提供模型开发、训练以及推理过程所有需要的数据集管理功能。目前支持将多种数据源统一接入能力。

-

通过简单配置即可将数据源接入到 AI Lab 中,实现数据的统一纳管、预热、数据集管理等功能。

-

创建数据集

-
    -
  1. -

    在左侧导航栏中点击 数据管理 -> 数据集列表 ,点击右侧的 创建 按钮。

    -

    点击创建

    -
  2. -
  3. -

    选择数据集归属的工作集群、命名空间 下一步

    -

    填写参数

    -
  4. -
  5. -

    配置目标数据的数据源类型,然后点击 确定

    -

    任务资源配置

    -

    目前支持这几种数据源:

    -
      -
    • GIT:支持 GitHub、GitLab、Gitee 等仓库
    • -
    • S3:支持 Amazon 云等对象存储
    • -
    • HTTP:直接输入一个有效的 HTTP 网址
    • -
    • PVC:支持预先创建的 Kubernetes PersistentVolumeClaim
    • -
    • NFS:支持 NFS 共享存储
    • -
    -
  6. -
  7. -

    数据集创建成功将返回数据集列表。你可以通过右侧的 执行更多操作。

    -

    数据集列表

    -
  8. -
-
-

Info

-

系统自动会在数据集创建成功后,立即进行一次性的数据预加载;在预加载完成之前,数据集不可以使用。

-
-

数据集使用

-

数据集创建成功后,可以在模型训练、推理等任务中使用。

-

在 Notebook 中使用

-

在创建 Notebook 中,可以直接使用数据集;使用方式如下:

-
    -
  • 使用数据集做训练数据挂载
  • -
  • 使用数据集做代码挂载
  • -
-

数据集列表

-

在 训练任务 中使用

-
    -
  • 使用数据集指定任务输出
  • -
  • 使用数据集指定任务输入
  • -
  • 使用数据集指定 TensorBoard 输出
  • -
-

任务管理

-

在推理服务 中使用

-
    -
  • 使用数据集挂载模型
  • -
-

推理服务

-

删除数据集

-

如果发现数据集冗余、过期或因其他缘故不再需要,可以从数据集列表中删除。

-
    -
  1. -

    在数据集列表右侧点击 ,在弹出菜单中选择 删除

    -

    删除

    -
  2. -
  3. -

    在弹窗中确认要删除的数据集,输入数据集名称后点击 删除

    -

    确认删除

    -
  4. -
  5. -

    屏幕提示删除成功,该数据集从列表中消失。

    -
  6. -
-
-

Caution

-

数据集一旦删除将不可恢复,请谨慎操作。

-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/dataset/environments.html b/admin/baize/developer/dataset/environments.html deleted file mode 100644 index 299ccce653..0000000000 --- a/admin/baize/developer/dataset/environments.html +++ /dev/null @@ -1,607 +0,0 @@ - - - - - - - - - - - - -管理环境 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

管理环境

-

本文说明如何在 AI Lab 中管理你的环境依赖库,以下是具体操作步骤和注意事项。

-
    -
  1. 环境管理概述
  2. -
  3. 创建新环境
  4. -
  5. 配置环境
  6. -
  7. 故障排除
  8. -
-

环境管理概述

-

传统方式,一般会将 Python 环境依赖在镜像中构建,镜像带有 Python 版本和依赖包的镜像,维护成本较高且更新不方便,往往需要重新构建镜像。

-

而在 AI Lab 中,用户可以通过 环境管理 模块来管理纯粹的环境依赖,将这部分从镜像中解耦,带来的优势有:

-
    -
  • 一份环境多处使用,同时可以在 Notebook、分布式训练任务、乃至推理服务中使用。
  • -
  • 更新依赖包更加方便,只需要更新环境依赖即可,无需重新构建镜像。
  • -
-

以下为环境管理的主要组成部分:

-
    -
  • 集群 :选择需要操作的集群。
  • -
  • 命名空间 :选择命名空间以限定操作范围。
  • -
  • 环境列表 :展示当前集群和命名空间下的所有环境及其状态。
  • -
-

环境管理概述

- - - - - - - - - - - - - - - - - - - - - - - - - -
字段描述举例值
名称环境的名称my-environment
状态环境当前的状态(正常或失败),新创建环境有一个预热过程,预热成功后即可在其他任务中使用正常
创建时间环境创建的时间2023-10-01 10:00:00
-

创建新环境

-

环境管理 界面,点击右上角的 创建 按钮,进入创建环境的流程。

-

创建新环境

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
字段描述举例值
名称输入环境的名称,长度为 2-63 个字符,必须以小写字母、数字开头和结尾。my-environment
部署位置集群 :选择需要部署的集群gpu-cluster
命名空间 :选择命名空间default
备注填写备注信息。这是一个测试环境
标签为环境添加标签。env:test
注解为环境添加注解。填写完成后,点击 下一步 进入环境配置。注解示例
-

配置环境

-

在环境配置步骤中,用户需要配置 Python 版本和依赖包管理工具。

-

配置环境

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
字段描述举例值
Python 版本选择所需的 Python 版本3.12.3
包管理器选择包管理工具,可选 PIPCONDAPIP
Environment Data如果选择 PIP:在下方编辑器中输入 requirements.txt 格式的依赖包列表。numpy==1.21.0
如果选择 CONDA:在下方编辑器中输入 environment.yaml 格式的依赖包列表。
其他选项pip 额外索引地址 :配置 pip 额外的索引地址;适用于企业内部有自己的私有仓库或者 PIP 加速站点。https://pypi.example.com
GPU 配置 :启用或禁用 GPU 配置;部分涉及到 GPU 的依赖包需要在预加载时配置 GPU 资源。启用
关联存储 :选择关联的存储配置;环境依赖包会存储在关联存储中。注意:需要使用支持 ReadWriteMany 的存储。my-storage-config
-

配置完成后,点击 创建 按钮,系统会自动创建并配置新的 Python 环境。

-

故障排除

-
    -
  • -

    如果环境创建失败:

    -
      -
    • 检查网络连接是否正常。
    • -
    • 确认填写的 Python 版本和包管理器配置无误。
    • -
    • 确保所选集群和命名空间可用。
    • -
    -
  • -
  • -

    如果依赖预热失败:

    -
      -
    • 检查 requirements.txtenvironment.yaml 文件格式是否正确。
    • -
    • 确认依赖包名称和版本是否正确无误。如遇到其他问题,请联系平台管理员或查看平台帮助文档获取更多支持。
    • -
    -
  • -
-
-

以上即为在 AI Lab 中管理 Python 依赖库的基本操作步骤和注意事项。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/index.html b/admin/baize/developer/index.html deleted file mode 100644 index 0b94f276d5..0000000000 --- a/admin/baize/developer/index.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - - - - - - - -开发控制台 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

开发控制台

-

开发控制台是开发者日常执行 AI 推理、大模型训练等任务的控制台。

-

开发者概览

-

方便用户通过概览快速了解,当前工作空间的资源及用量情况,包含了GPU资源、Notebook、任务以及数据集的数量信息。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/inference/models.html b/admin/baize/developer/inference/models.html deleted file mode 100644 index ec52af59b9..0000000000 --- a/admin/baize/developer/inference/models.html +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - - - - - - -了解模型支持情况 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- -
-
- -
-
-
-
- - - - - - -

了解模型支持情况

-

随着 AI Lab 的快速迭代,我们已经支持了多种模型的推理服务,您可以在这里看到所支持的模型信息。

-
    -
  • AI Lab v0.3.0 上线了模型推理服务,针对传统的深度学习模型,方便用户可以直接使用AI Lab 的推理服务,无需关心模型的部署和维护。
  • -
  • AI Lab v0.6.0 支持了完整版本的 vLLM 推理能力,支持诸多大语言模型,如 LLamaQwenChatGLM 等。
  • -
-

您可以在 AI Lab 中使用经过算丰 AI 算力平台验证过的 GPU 类型; -更多细节参阅 GPU 支持矩阵

-

点击创建

-

Triton Inference Server

-

通过 Triton Inference Server 可以很好的支持传统的深度学习模型,我们目前支持主流的推理后端服务:

- - - - - - - - - - - - - - - - - - - - - - - - - -
Backend支持模型格式介绍
pytorchTorchScript、PyTorch 2.0 格式的模型triton-inference-server/pytorch_backend
tensorflowTensorFlow 2.xtriton-inference-server/tensorflow_backend
vLLM(Deprecated)与 vLLM 一致支持的模型和 vLLM support Model 一致
-
-

Danger

-

使用 Triton 的 Backend vLLM 的方式已被弃用,推荐使用最新支持 vLLM 来部署您的大语言模型。

-
-

vLLM

-

通过 vLLM 我们可以很快的使用大语言模型,您可以在这里看到我们支持的模型列表,这通常和 vLLM Support Models 保持一致。

-
    -
  • HuggingFace 模型:我们支持了 HuggingFace 的大部分模型,您可以在 HuggingFace Model Hub 查看更多模型。
  • -
  • vLLM 支持模型列出了支持的大语言模型和视觉语言模型。
  • -
  • 使用 vLLM 支持框架的模型进行微调后的模型。
  • -
-

vLLM 新特性

-

目前,AI Lab 还支持在使用 vLLM 作为推理工具时的一些新特性:

-
    -
  • 在推理模型时,启用 Lora Adapter 来优化模型推理服务
  • -
  • 提供兼容 OpenAIOpenAPI 接口,方便用户切换到本地推理服务时,可以低成本的快速切换
  • -
-

下一步

- - - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/inference/triton-inference.html b/admin/baize/developer/inference/triton-inference.html deleted file mode 100644 index 45dc827966..0000000000 --- a/admin/baize/developer/inference/triton-inference.html +++ /dev/null @@ -1,667 +0,0 @@ - - - - - - - - - - - - -创建 Triton 推理服务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

创建 Triton 推理服务

-

AI Lab 目前提供以 Triton、vLLM 作为推理框架,用户只需简单配置即可快速启动一个高性能的推理服务。

-
-

Danger

-

使用 Triton 的 Backend vLLM 的方式已被弃用,推荐使用最新支持 vLLM 来部署您的大语言模型。

-
-

Triton介绍

-

Triton 是由 NVIDIA 开发的一个开源推理服务器,旨在简化机器学习模型的部署和推理服务。它支持多种深度学习框架,包括 TensorFlow、PyTorch 等,使得用户能够轻松管理和部署不同类型的模型。

-

前提条件

-

准备模型数据:在数据集管理中纳管模型代码,并保证数据成功预加载,下面以 mnist 手写数字识别的 PyTorch 模型为例。

-
-

Note

-

待推理的模型在数据集中需要遵以下目录格式:

-
  <model-repository-name>
-  └── <model-name>
-     └── <version>
-        └── <model-definition-file>
-
-
-

本例中的目录格式为:

-
    model-repo
-    └── mnist-cnn
-        └── 1
-            └── model.pt
-
-

创建推理服务

-

目前已经支持表单创建,可以界面字段提示,进行服务创建。

-

点击创建

-

配置模型路径

-

模型路径 model-repo/mnist-cnn/1/model.pt 需要和数据集中的模型目录格式一致。

-

模型配置

-

点击创建

-

配置输入和输出参数

-
-

Note

-

输入和输出参数的第一个维度默认为 batchsize 的大小,设置为 -1 可以根据输入的推理数据自动计算 batchsize。参数其余维度和数据类型需要与模型输入匹配。

-
-

配置环境

-

可以导入 环境管理 中创建的环境作为推理时的运行环境。

-

高级配置

-

点击创建

-

配置认证策略

-

支持 API key 的请求方式认证,用户可以自定义增加认证参数。

-

亲和性调度

-

支持 根据 GPU 资源等节点配置实现自动化的亲和性调度,同时也方便用户自定义调度策略。

-

访问

-

点击创建

- -

API 访问

-
    -
  • Triton 提供了一个基于 REST 的 API,允许客户端通过 HTTP POST 请求进行模型推理。
  • -
  • 客户端可以发送 JSON 格式的请求体,其中包含输入数据和相关的元数据。
  • -
-

HTTP 访问

-
    -
  1. -

    发送 HTTP POST 请求:使用工具如 curl 或 HTTP 客户端库(如 Python 的 requests 库)向 Triton Server 发送 POST 请求。

    -
  2. -
  3. -

    设置 HTTP 头:根据用户配置项自动生成的配置,包含模型输入和输出的元数据。

    -
  4. -
  5. -

    构建请求体:请求体通常包含要进行推理的输入数据,以及模型特定的元数据。

    -
  6. -
-
示例 curl 命令
-
  curl -X POST "http://<ip>:<port>/v2/models/<inference-name>/infer" \
-  -H "Content-Type: application/json" \
-  -d '{
-    "inputs": [
-      {
-        "name": "model_input",            
-        "shape": [1, 1, 32, 32],          
-        "datatype": "FP32",               
-        "data": [
-          [0.1234, 0.5678, 0.9101, ... ]  
-        ]
-      }
-    ]
-  }'
-
-
    -
  • <ip> 是 Triton Inference Server 运行的主机地址。
  • -
  • <port> 是 Triton Inference Server 运行的主机端口号。
  • -
  • <inference-name> 是所创建的推理服务的名称。
  • -
  • "name" 要与模型配置中的输入参数的 name 一致。
  • -
  • "shape" 要与模型配置中的输入参数的 dims 一致。
  • -
  • "datatype" 要与模型配置中的输入参数的 Data Type 一致。
  • -
  • "data" 替换为实际的推理数据。
  • -
- -

请注意,上述示例代码需要根据你的具体模型和环境进行调整,输入数据的格式和内容也需要符合模型的要求。

- - - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/inference/vllm-inference.html b/admin/baize/developer/inference/vllm-inference.html deleted file mode 100644 index 24368c2c6c..0000000000 --- a/admin/baize/developer/inference/vllm-inference.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - - - - - - - - - -创建 vLLM 推理服务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

创建 vLLM 推理服务

-

AI Lab 支持以 vLLM 作为推理服务,提供全部 vLLM 的能力,同时提供了完全适配 OpenAI 接口定义。

-

vLLM 介绍

-

vLLM 是一个快速且易于使用的用于推理和服务的库,vLLM 旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM 在速度、灵活性方面具有以下部分特点:

-
    -
  • 连续批处理传入请求;
  • -
  • 使用 PagedAttention 高效管理注意力键和值内存;
  • -
  • 与流行的 HuggingFace 型号无缝集成;
  • -
  • 兼容 OpenAI 的 API 服务器。
  • -
-

前提条件

-

准备模型数据:在数据集管理中纳管模型代码,并保证数据成功预加载。

-

创建推理服务

-
    -
  1. -

    选择 vLLM 推理框架,并在选择模型模块选择提前创建好的模型数据集 hdd-models 并填写数据集中模型所在的路径信息。

    -

    本文推理服务的创建使用 ChatGLM3 模型。

    -

    模型选择

    -
  2. -
  3. -

    配置推理服务的资源,并调整推理服务运行的参数。

    -

    数据选择

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    参数名描述
    GPU 资源根据模型规模以及集群资源可以为推理配置 GPU 资源。
    允许远程代码控制 vLLM 是否信任并执行来自远程源的代码
    LoRALoRA 是一种针对深度学习模型的参数高效调整技术。它通过将原始模型参数矩阵分解为低秩矩阵,从而减少参数数量和计算复杂度。 1. --lora-modules:用来指定特定模块或层进行低秩近似 2. max_loras_rank:用来指定 LoRA 模型中每个适配层的最大秩,对于简单的任务,可以选择较小的秩值,而对于复杂任务,可能需要较大的秩值来保证模型性能。 3. max_loras:表示模型中可以包含的 LoRA 层的最大数量,根据模型大小、推理复杂度等因素自定 4. max_cpu_loras:用于指定在 CPU 环境中可以处理的 LoRA 层的最大数。
    关联环境通过选择环境预定义推理时所需的环境依赖。
    -
    -

    Info

    -

    支持配置 LoRA 参数的模型可参考 vLLM 支持的模型

    -
    -
  4. -
  5. -

    高级配置 中,支持根据 GPU 资源等节点配置实现自动化的亲和性调度,同时也方便用户自定义调度策略。

    -
  6. -
-

验证推理服务

-

推理服务创建完成之后,点击推理服务名称进入详情,查看 API 调用方法。通过使用 Curl、Python、Nodejs 等方式验证执行结果。

-

拷贝详情中的 curl 命令,并在终端中执行命令发送一条模型推理请求,预期输出:

-

推理接口

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/create.html b/admin/baize/developer/jobs/create.html deleted file mode 100644 index 6caac43834..0000000000 --- a/admin/baize/developer/jobs/create.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - - - - - - - - - -创建任务(Job) - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- -
-
-
- -
-
-
-
-
- - - - - - -

创建任务(Job)

-

任务管理是指通过作业调度和管控组件来创建和管理任务生命周期的功能。

-

AI Lab 采用 Kubernetes 的 Job 机制来调度各项 AI 推理、训练任务。

-

通用步骤

-
    -
  1. -

    在左侧导航栏中点击 任务中心 -> 训练任务 ,点击右侧的 创建 按钮。

    -

    点击创建

    -
  2. -
  3. -

    系统会预先填充基础配置数据,包括要部署的集群、命名空间、任务类型、队列、优先级等。 - 调整这些参数后点击 下一步

    -

    填写参数

    -
  4. -
  5. -

    配置镜像地址、运行参数以及关联的数据集、环境和资源后,点击 下一步

    -

    任务资源配置

    -
  6. -
  7. -

    按需添加标签、注解、环境变量等任务参数,选择调度策略后点击 确定

    -

    高级配置

    -
  8. -
  9. -

    任务创建成功后,会有几种运行状态:

    -
      -
    • 运行中
    • -
    • 排队中
    • -
    • 提交成功、提交失败
    • -
    • 任务成功、任务失败
    • -
    -
  10. -
-

创建特定任务

- - - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/delete.html b/admin/baize/developer/jobs/delete.html deleted file mode 100644 index ea10045d82..0000000000 --- a/admin/baize/developer/jobs/delete.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - - - -删除任务(Job) - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

删除任务(Job)

-

如果发现任务冗余、过期或因其他缘故不再需要,可以从训练任务列表中删除。

-
    -
  1. -

    在训练任务列表右侧点击 ,在弹出菜单中选择 删除

    -

    删除

    -
  2. -
  3. -

    在弹窗中确认要删除的任务,输入任务名称后点击 删除

    -

    确认删除

    -
  4. -
  5. -

    屏幕提示删除成功,该任务从列表中消失。

    -

    已删除

    -
  6. -
-
-

Caution

-

任务一旦删除将不可恢复,请谨慎操作。

-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/mpi.html b/admin/baize/developer/jobs/mpi.html deleted file mode 100644 index 0b126f54c3..0000000000 --- a/admin/baize/developer/jobs/mpi.html +++ /dev/null @@ -1,676 +0,0 @@ - - - - - - - - - - - - -MPI 任务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

MPI 任务

-

MPI(Message Passing Interface)是一种用于并行计算的通信协议,它允许多个计算节点之间进行消息传递和协作。 -MPI 任务是使用 MPI 协议进行并行计算的任务,适用于需要大规模并行处理的应用场景,例如分布式训练、科学计算等。

-

在 AI Lab 中,我们提供了 MPI 任务的支持,您可以通过界面化操作,快速创建 MPI 任务,进行高性能的并行计算。 -本教程将指导您如何在 AI Lab 中创建和运行一个 MPI 任务。

-

任务配置介绍

-
    -
  • 任务类型MPI,用于运行并行计算任务。
  • -
  • 运行环境 :选用预装了 MPI 环境的镜像,或者在任务中指定安装必要的依赖。
  • -
  • MPIJob 配置 :理解并配置 MPIJob 的各项参数,如副本数、资源请求等。
  • -
-

任务运行环境

-

在这里我们使用 baize-notebook 基础镜像和 关联环境 的方式来作为任务的基础运行环境。 -确保运行环境中包含 MPI 及相关库,如 OpenMPI、mpi4py 等。

-
-

注意 :了解如何创建环境,请参考环境列表

-
-

创建 MPI 任务

-

MPI 任务创建步骤

-

MPI 任务

-
    -
  1. 登录平台 :登录 AI Lab 平台,点击左侧导航栏中的 任务中心,进入 训练任务 页面。
  2. -
  3. 创建任务 :点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型 :在弹出的窗口中,选择任务类型为 MPI,然后点击 下一步
  6. -
  7. 填写任务信息 :填写任务名称和描述,例如 “benchmarks-mpi”,然后点击 下一步
  8. -
  9. 配置任务参数 :根据您的需求,配置任务的运行参数、镜像、资源等信息。
  10. -
-

运行参数

-
    -
  • 启动命令 :使用 mpirun,这是运行 MPI 程序的命令。
  • -
  • 命令参数 :输入您要运行的 MPI 程序的参数。
  • -
-

示例:运行 TensorFlow Benchmarks

-

在本示例中,我们将运行一个 TensorFlow 的基准测试程序,使用 Horovod 进行分布式训练。 -首先,确保您使用的镜像中包含所需的依赖项,例如 TensorFlow、Horovod、Open MPI 等。

-

镜像选择 :使用包含 TensorFlow 和 MPI 的镜像,例如 mai.daocloud.io/docker.io/mpioperator/tensorflow-benchmarks:latest

-

命令参数

-
mpirun --allow-run-as-root -np 2 -bind-to none -map-by slot \
-  -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH -x PATH \
-  -mca pml ob1 -mca btl ^openib \
-  python scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py \
-  --model=resnet101 --batch_size=64 --variable_update=horovod
-
-

说明

-
    -
  • mpirun:MPI 的启动命令。
  • -
  • --allow-run-as-root:允许以 root 用户运行(在容器中通常是 root 用户)。
  • -
  • -np 2:指定运行的进程数为 2。
  • -
  • -bind-to none-map-by slot:MPI 进程绑定和映射的配置。
  • -
  • -x NCCL_DEBUG=INFO:设置 NCCL(NVIDIA Collective Communication Library)的调试信息级别。
  • -
  • -x LD_LIBRARY_PATH-x PATH:在 MPI 环境中传递必要的环境变量。
  • -
  • -mca pml ob1 -mca btl ^openib:MPI 的配置参数,指定传输层和消息层协议。
  • -
  • python scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py:运行 TensorFlow 基准测试脚本。
  • -
  • --model=resnet101--batch_size=64--variable_update=horovod:TensorFlow 脚本的参数,指定模型、批量大小和使用 Horovod 进行参数更新。
  • -
-

资源配置

-

在任务配置中,需要为每个节点(Launcher 和 Worker)分配适当的资源,例如 CPU、内存和 GPU。

-

资源示例

-
    -
  • -

    Launcher(启动器)

    -
      -
    • 副本数 :1
    • -
    • 资源请求
        -
      • CPU:2 核
      • -
      • 内存:4 GiB
      • -
      -
    • -
    -
  • -
  • -

    Worker(工作节点)

    -
      -
    • 副本数 :2
    • -
    • 资源请求
        -
      • CPU:2 核
      • -
      • 内存:4 GiB
      • -
      • GPU:根据需求分配
      • -
      -
    • -
    -
  • -
-

完整的 MPIJob 配置示例

-

以下是完整的 MPIJob 配置示例,供您参考。

-
apiVersion: kubeflow.org/v1
-kind: MPIJob
-metadata:
-  name: tensorflow-benchmarks
-spec:
-  slotsPerWorker: 1
-  runPolicy:
-    cleanPodPolicy: Running
-  mpiReplicaSpecs:
-    Launcher:
-      replicas: 1
-      template:
-        spec:
-          containers:
-            - name: tensorflow-benchmarks
-              image: mai.daocloud.io/docker.io/mpioperator/tensorflow-benchmarks:latest
-              command:
-                - mpirun
-                - --allow-run-as-root
-                - -np
-                - "2"
-                - -bind-to
-                - none
-                - -map-by
-                - slot
-                - -x
-                - NCCL_DEBUG=INFO
-                - -x
-                - LD_LIBRARY_PATH
-                - -x
-                - PATH
-                - -mca
-                - pml
-                - ob1
-                - -mca
-                - btl
-                - ^openib
-                - python
-                - scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py
-                - --model=resnet101
-                - --batch_size=64
-                - --variable_update=horovod
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-    Worker:
-      replicas: 2
-      template:
-        spec:
-          containers:
-            - name: tensorflow-benchmarks
-              image: mai.daocloud.io/docker.io/mpioperator/tensorflow-benchmarks:latest
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpumem: 1k
-                  nvidia.com/vgpu: "1"
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-
-

配置解析

-
    -
  • apiVersionkind:表示资源的 API 版本和类型,MPIJob 是 Kubeflow 定义的自定义资源,用于创建 MPI 类型的任务。
  • -
  • metadata:元数据,包含任务的名称等信息。
  • -
  • spec:任务的详细配置。
      -
    • slotsPerWorker:每个 Worker 节点的槽位数量,通常设置为 1。
    • -
    • runPolicy:运行策略,例如任务完成后是否清理 Pod。
    • -
    • mpiReplicaSpecs:MPI 任务的副本配置。
        -
      • Launcher:启动器,负责启动 MPI 任务。
          -
        • replicas:副本数,通常为 1。
        • -
        • template:Pod 模板,定义容器运行的镜像、命令、资源等。
        • -
        -
      • -
      • Worker:工作节点,实际执行任务的计算节点。
          -
        • replicas:副本数,根据并行需求设置,这里设置为 2。
        • -
        • template:Pod 模板,同样定义容器的运行环境和资源。
        • -
        -
      • -
      -
    • -
    -
  • -
-

设置任务副本数

-

在创建 MPI 任务时,需要根据 mpiReplicaSpecs 中配置的副本数,正确设置 任务副本数

-
    -
  • 总副本数 = Launcher 副本数 + Worker 副本数
  • -
  • -

    本示例中:

    -
      -
    • Launcher 副本数:1
    • -
    • Worker 副本数:2
    • -
    • 总副本数 :1 + 2 = 3
    • -
    -
  • -
-

因此,在任务配置中,您需要将 任务副本数 设置为 3

-

提交任务

-

配置完成后,点击 提交 按钮,开始运行 MPI 任务。

-

查看运行结果

-

任务提交成功后,您可以进入 任务详情 页面,查看资源的使用情况和任务的运行状态。 -从右上角进入 工作负载详情,可以查看运行过程中每个节点的日志输出。

-

示例输出

-
TensorFlow:  1.13
-Model:       resnet101
-Mode:        training
-Batch size:  64
-...
-
-Total images/sec: 125.67
-
-

这表示 MPI 任务成功运行,TensorFlow 基准测试程序完成了分布式训练。

-
-

小结

-

通过本教程,您学习了如何在 AI Lab 平台上创建和运行一个 MPI 任务。我们详细介绍了 MPIJob 的配置方式, -以及如何在任务中指定运行的命令和资源需求。希望本教程对您有所帮助,如有任何问题,请参考平台提供的其他文档或联系技术支持。

-
-

附录

-
    -
  • 如果您的运行环境未预装所需的库(如 mpi4py、Horovod 等),请在任务中添加安装命令,或者使用预装了相关依赖的镜像。
  • -
  • 在实际应用中,您可以根据需求修改 MPIJob 的配置,例如更改镜像、命令参数、资源请求等。
  • -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/mxnet.html b/admin/baize/developer/jobs/mxnet.html deleted file mode 100644 index 49e8c6d4e8..0000000000 --- a/admin/baize/developer/jobs/mxnet.html +++ /dev/null @@ -1,800 +0,0 @@ - - - - - - - - - - - - -MXNet 任务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

MXNet 任务

-
-

Warning

-

由于 Apache MXNet 项目已存档,因此 Kubeflow MXJob 将在未来的 Training Operator 1.9 版本中弃用和删除。

-
-

Apache MXNet 是一个高性能的深度学习框架,支持多种编程语言。MXNet 任务可以使用多种方式进行训练,包括单机模式和分布式模式。在 AI Lab 中,我们提供了对 MXNet 任务的支持,您可以通过界面化操作,快速创建 MXNet 任务,进行模型训练。

-

本教程将指导您如何在 AI Lab 平台上创建和运行 MXNet 的单机和分布式任务。

-

任务配置介绍

-
    -
  • 任务类型MXNet,支持单机和分布式两种模式。
  • -
  • 运行环境:选择包含 MXNet 框架的镜像,或在任务中安装必要的依赖。
  • -
-

任务运行环境

-

我们使用 release-ci.daocloud.io/baize/kubeflow/mxnet-gpu:latest 镜像作为任务的基础运行环境。该镜像预装了 MXNet 及其相关依赖,支持 GPU 加速。

-
-

注意:了解如何创建和管理环境,请参考 环境列表

-
-

创建 MXNet 任务

-

mxnet

-

MXNet 单机任务

-

创建步骤

-
    -
  1. 登录平台:登录 AI Lab 平台,点击左侧导航栏中的 任务中心,进入 训练任务 页面。
  2. -
  3. 创建任务:点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型:在弹出的窗口中,选择任务类型为 MXNet,然后点击 下一步
  6. -
  7. 填写任务信息:填写任务名称和描述,例如 “MXNet 单机训练任务”,然后点击 确定
  8. -
  9. 配置任务参数:根据您的需求,配置任务的运行参数、镜像、资源等信息。
  10. -
-

运行参数

-
    -
  • 启动命令python3
  • -
  • -

    命令参数

    -
    /mxnet/mxnet/example/gluon/mnist/mnist.py --epochs 10 --cuda
    -
    -

    说明

    -
      -
    • /mxnet/mxnet/example/gluon/mnist/mnist.py:MXNet 提供的 MNIST 手写数字识别示例脚本。
    • -
    • --epochs 10:设置训练轮数为 10。
    • -
    • --cuda:使用 CUDA 进行 GPU 加速。
    • -
    -
  • -
-

资源配置

-
    -
  • 副本数:1(单机任务)
  • -
  • 资源请求
      -
    • CPU:2 核
    • -
    • 内存:4 GiB
    • -
    • GPU:1 块
    • -
    -
  • -
-

完整的 MXJob 配置示例

-

以下是单机 MXJob 的 YAML 配置:

-
apiVersion: "kubeflow.org/v1"
-kind: "MXJob"
-metadata:
-  name: "mxnet-single-job"
-spec:
-  jobMode: MXTrain
-  mxReplicaSpecs:
-    Worker:
-      replicas: 1
-      restartPolicy: Never
-      template:
-        spec:
-          containers:
-            - name: mxnet
-              image: release-ci.daocloud.io/baize/kubeflow/mxnet-gpu:latest
-              command: ["python3"]
-              args:
-                [
-                  "/mxnet/mxnet/example/gluon/mnist/mnist.py",
-                  "--epochs",
-                  "10",
-                  "--cuda",
-                ]
-              ports:
-                - containerPort: 9991
-                  name: mxjob-port
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpu: 1
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpu: 1
-
-

配置解析

-
    -
  • apiVersionkind:指定资源的 API 版本和类型,这里是 MXJob
  • -
  • metadata:元数据,包括任务名称等信息。
  • -
  • spec:任务的详细配置。
      -
    • jobMode:设置为 MXTrain,表示训练任务。
    • -
    • mxReplicaSpecs:MXNet 任务的副本配置。
        -
      • Worker:指定工作节点的配置。
          -
        • replicas:副本数,这里为 1。
        • -
        • restartPolicy:重启策略,设为 Never,表示任务失败时不重启。
        • -
        • template:Pod 模板,定义容器的运行环境和资源。
            -
          • containers:容器列表。
              -
            • name:容器名称。
            • -
            • image:使用的镜像。
            • -
            • commandargs:启动命令和参数。
            • -
            • ports:容器端口配置。
            • -
            • resources:资源请求和限制。
            • -
            -
          • -
          -
        • -
        -
      • -
      -
    • -
    -
  • -
-

提交任务

-

配置完成后,点击 提交 按钮,开始运行 MXNet 单机任务。

-

查看运行结果

-

任务提交成功后,您可以进入 任务详情 页面,查看资源的使用情况和任务的运行状态。从右上角进入 工作负载详情,可以查看运行过程中的日志输出。

-

示例输出

-
Epoch 1: accuracy=0.95
-Epoch 2: accuracy=0.97
-...
-Epoch 10: accuracy=0.98
-Training completed.
-
-

这表示 MXNet 单机任务成功运行,模型训练完成。

-
-

MXNet 分布式任务

-

在分布式模式下,MXNet 任务可以使用多台计算节点共同完成训练,提高训练效率。

-

创建步骤

-
    -
  1. 登录平台:同上。
  2. -
  3. 创建任务:点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型:选择任务类型为 MXNet,然后点击 下一步
  6. -
  7. 填写任务信息:填写任务名称和描述,例如 “MXNet 分布式训练任务”,然后点击 确定
  8. -
  9. 配置任务参数:根据需求,配置运行参数、镜像、资源等。
  10. -
-

运行参数

-
    -
  • 启动命令python3
  • -
  • -

    命令参数

    -
    /mxnet/mxnet/example/image-classification/train_mnist.py --num-epochs 10 --num-layers 2 --kv-store dist_device_sync --gpus 0
    -
    -

    说明

    -
      -
    • /mxnet/mxnet/example/image-classification/train_mnist.py:MXNet 提供的图像分类示例脚本。
    • -
    • --num-epochs 10:训练轮数为 10。
    • -
    • --num-layers 2:模型的层数为 2。
    • -
    • --kv-store dist_device_sync:使用分布式设备同步模式。
    • -
    • --gpus 0:使用 GPU 进行加速。
    • -
    -
  • -
-

资源配置

-
    -
  • 任务副本数:3(包括 Scheduler、Server 和 Worker)
  • -
  • 各角色资源请求
      -
    • Scheduler(调度器):
        -
      • 副本数:1
      • -
      • 资源请求
          -
        • CPU:2 核
        • -
        • 内存:4 GiB
        • -
        • GPU:1 块
        • -
        -
      • -
      -
    • -
    • Server(参数服务器):
        -
      • 副本数:1
      • -
      • 资源请求
          -
        • CPU:2 核
        • -
        • 内存:4 GiB
        • -
        • GPU:1 块
        • -
        -
      • -
      -
    • -
    • Worker(工作节点):
        -
      • 副本数:1
      • -
      • 资源请求
          -
        • CPU:2 核
        • -
        • 内存:4 GiB
        • -
        • GPU:1 块
        • -
        -
      • -
      -
    • -
    -
  • -
-

完整的 MXJob 配置示例

-

以下是分布式 MXJob 的 YAML 配置:

-
apiVersion: "kubeflow.org/v1"
-kind: "MXJob"
-metadata:
-  name: "mxnet-job"
-spec:
-  jobMode: MXTrain
-  mxReplicaSpecs:
-    Scheduler:
-      replicas: 1
-      restartPolicy: Never
-      template:
-        spec:
-          containers:
-            - name: mxnet
-              image: release-ci.daocloud.io/baize/kubeflow/mxnet-gpu:latest
-              ports:
-                - containerPort: 9991
-                  name: mxjob-port
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpu: 1
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-    Server:
-      replicas: 1
-      restartPolicy: Never
-      template:
-        spec:
-          containers:
-            - name: mxnet
-              image: release-ci.daocloud.io/baize/kubeflow/mxnet-gpu:latest
-              ports:
-                - containerPort: 9991
-                  name: mxjob-port
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpu: 1
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-    Worker:
-      replicas: 1
-      restartPolicy: Never
-      template:
-        spec:
-          containers:
-            - name: mxnet
-              image: release-ci.daocloud.io/baize/kubeflow/mxnet-gpu:latest
-              command: ["python3"]
-              args:
-                [
-                  "/mxnet/mxnet/example/image-classification/train_mnist.py",
-                  "--num-epochs",
-                  "10",
-                  "--num-layers",
-                  "2",
-                  "--kv-store",
-                  "dist_device_sync",
-                  "--gpus",
-                  "0",
-                ]
-              ports:
-                - containerPort: 9991
-                  name: mxjob-port
-              resources:
-                limits:
-                  cpu: "2"
-                  memory: 4Gi
-                  nvidia.com/gpu: 1
-                requests:
-                  cpu: "2"
-                  memory: 4Gi
-
-

配置解析

-
    -
  • Scheduler(调度器):负责协调集群中各节点的任务调度。
  • -
  • Server(参数服务器):用于存储和更新模型参数,实现分布式参数同步。
  • -
  • Worker(工作节点):实际执行训练任务。
  • -
  • 资源配置:为各角色分配适当的资源,确保任务顺利运行。
  • -
-

设置任务副本数

-

在创建 MXNet 分布式任务时,需要根据 mxReplicaSpecs 中配置的副本数,正确设置 任务副本数

-
    -
  • 总副本数 = Scheduler 副本数 + Server 副本数 + Worker 副本数
  • -
  • 本示例中:
      -
    • Scheduler 副本数:1
    • -
    • Server 副本数:1
    • -
    • Worker 副本数:1
    • -
    • 总副本数:1 + 1 + 1 = 3
    • -
    -
  • -
-

因此,在任务配置中,需要将 任务副本数 设置为 3

-

提交任务

-

配置完成后,点击 提交 按钮,开始运行 MXNet 分布式任务。

-

查看运行结果

-

进入 任务详情 页面,查看任务的运行状态和资源使用情况。您可以查看每个角色(Scheduler、Server、Worker)的日志输出。

-

示例输出

-
INFO:root:Epoch[0] Batch [50]     Speed: 1000 samples/sec   accuracy=0.85
-INFO:root:Epoch[0] Batch [100]    Speed: 1200 samples/sec   accuracy=0.87
-...
-INFO:root:Epoch[9] Batch [100]    Speed: 1300 samples/sec   accuracy=0.98
-Training completed.
-
-

这表示 MXNet 分布式任务成功运行,模型训练完成。

-
-

小结

-

通过本教程,您学习了如何在 AI Lab 平台上创建和运行 MXNet 的单机和分布式任务。我们详细介绍了 MXJob 的配置方式,以及如何在任务中指定运行的命令和资源需求。希望本教程对您有所帮助,如有任何问题,请参考平台提供的其他文档或联系技术支持。

-
-

附录

-
    -
  • -

    注意事项

    -
      -
    • 确保您使用的镜像包含所需的 MXNet 版本和依赖。
    • -
    • 根据实际需求调整资源配置,避免资源不足或浪费。
    • -
    • 如需使用自定义的训练脚本,请修改启动命令和参数。
    • -
    -
  • -
  • -

    参考文档

    - -
  • -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/paddle.html b/admin/baize/developer/jobs/paddle.html deleted file mode 100644 index ced7da6e73..0000000000 --- a/admin/baize/developer/jobs/paddle.html +++ /dev/null @@ -1,691 +0,0 @@ - - - - - - - - - - - - -PaddlePaddle 任务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

PaddlePaddle 任务

-

PaddlePaddle(飞桨)是百度开源的深度学习平台,支持丰富的神经网络模型和分布式训练方式。PaddlePaddle 任务可以通过单机或分布式模式进行训练。在 AI Lab 平台中,我们提供了对 PaddlePaddle 任务的支持,您可以通过界面化操作,快速创建 PaddlePaddle 任务,进行模型训练。

-

本教程将指导您如何在 AI Lab 平台上创建和运行 PaddlePaddle 的单机和分布式任务。

-

任务配置介绍

-
    -
  • 任务类型PaddlePaddle,支持单机和分布式两种模式。
  • -
  • 运行环境:选择包含 PaddlePaddle 框架的镜像,或在任务中安装必要的依赖。
  • -
-

任务运行环境

-

我们使用 registry.baidubce.com/paddlepaddle/paddle:2.4.0rc0-cpu 镜像作为任务的基础运行环境。该镜像预装了 PaddlePaddle 框架,适用于 CPU 计算。如果需要使用 GPU,请选择对应的 GPU 版本镜像。

-
-

注意:了解如何创建和管理环境,请参考 环境列表

-
-

创建 PaddlePaddle 任务

-

paddle

-

PaddlePaddle 单机训练任务

-

创建步骤

-
    -
  1. 登录平台:登录 AI Lab 平台,点击左侧导航栏中的 任务中心,进入 训练任务 页面。
  2. -
  3. 创建任务:点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型:在弹出的窗口中,选择任务类型为 PaddlePaddle,然后点击 下一步
  6. -
  7. 填写任务信息:填写任务名称和描述,例如 “PaddlePaddle 单机训练任务”,然后点击 确定
  8. -
  9. 配置任务参数:根据您的需求,配置任务的运行参数、镜像、资源等信息。
  10. -
-

运行参数

-
    -
  • 启动命令python
  • -
  • -

    命令参数

    -
    -m paddle.distributed.launch run_check
    -
    -

    说明

    -
      -
    • -m paddle.distributed.launch:使用 PaddlePaddle 提供的分布式启动模块,即使在单机模式下也可以使用,方便将来迁移到分布式。
    • -
    • run_check:PaddlePaddle 提供的测试脚本,用于检查分布式环境是否正常。
    • -
    -
  • -
-

资源配置

-
    -
  • 副本数:1(单机任务)
  • -
  • 资源请求
      -
    • CPU:根据需求设置,建议至少 1 核
    • -
    • 内存:根据需求设置,建议至少 2 GiB
    • -
    • GPU:如果需要使用 GPU,选择 GPU 版本的镜像,并分配相应的 GPU 资源
    • -
    -
  • -
-

完整的 PaddleJob 配置示例

-

以下是单机 PaddleJob 的 YAML 配置:

-
apiVersion: kubeflow.org/v1
-kind: PaddleJob
-metadata:
-    name: paddle-simple-cpu
-    namespace: kubeflow
-spec:
-    paddleReplicaSpecs:
-        Worker:
-            replicas: 1
-            restartPolicy: OnFailure
-            template:
-                spec:
-                    containers:
-                        - name: paddle
-                          image: registry.baidubce.com/paddlepaddle/paddle:2.4.0rc0-cpu
-                          command:
-                              [
-                                  'python',
-                                  '-m',
-                                  'paddle.distributed.launch',
-                                  'run_check',
-                              ]
-
-

配置解析

-
    -
  • apiVersionkind:指定资源的 API 版本和类型,这里是 PaddleJob
  • -
  • metadata:元数据,包括任务名称和命名空间。
  • -
  • spec:任务的详细配置。
      -
    • paddleReplicaSpecs:PaddlePaddle 任务的副本配置。
        -
      • Worker:指定工作节点的配置。
          -
        • replicas:副本数,这里为 1,表示单机训练。
        • -
        • restartPolicy:重启策略,设为 OnFailure,表示任务失败时自动重启。
        • -
        • template:Pod 模板,定义容器的运行环境和资源。
            -
          • containers:容器列表。
              -
            • name:容器名称。
            • -
            • image:使用的镜像。
            • -
            • command:启动命令和参数。
            • -
            -
          • -
          -
        • -
        -
      • -
      -
    • -
    -
  • -
-

提交任务

-

配置完成后,点击 提交 按钮,开始运行 PaddlePaddle 单机任务。

-

查看运行结果

-

任务提交成功后,您可以进入 任务详情 页面,查看资源的使用情况和任务的运行状态。从右上角进入 工作负载详情,可以查看运行过程中的日志输出。

-

示例输出

-
run check success, PaddlePaddle is installed correctly on this node :)
-
-

这表示 PaddlePaddle 单机任务成功运行,环境配置正常。

-
-

PaddlePaddle 分布式训练任务

-

在分布式模式下,PaddlePaddle 任务可以使用多台计算节点共同完成训练,提高训练效率。

-

创建步骤

-
    -
  1. 登录平台:同上。
  2. -
  3. 创建任务:点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型:选择任务类型为 PaddlePaddle,然后点击 下一步
  6. -
  7. 填写任务信息:填写任务名称和描述,例如 “PaddlePaddle 分布式训练任务”,然后点击 确定
  8. -
  9. 配置任务参数:根据需求,配置运行参数、镜像、资源等。
  10. -
-

运行参数

-
    -
  • 启动命令python
  • -
  • -

    命令参数

    -
    -m paddle.distributed.launch train.py --epochs=10
    -
    -

    说明

    -
      -
    • -m paddle.distributed.launch:使用 PaddlePaddle 提供的分布式启动模块。
    • -
    • train.py:您的训练脚本,需要放在镜像中或挂载到容器内。
    • -
    • --epochs=10:训练的轮数,这里设置为 10。
    • -
    -
  • -
-

资源配置

-
    -
  • 任务副本数:根据 Worker 副本数设置,这里为 2。
  • -
  • 资源请求
      -
    • CPU:根据需求设置,建议至少 1 核
    • -
    • 内存:根据需求设置,建议至少 2 GiB
    • -
    • GPU:如果需要使用 GPU,选择 GPU 版本的镜像,并分配相应的 GPU 资源
    • -
    -
  • -
-

完整的 PaddleJob 配置示例

-

以下是分布式 PaddleJob 的 YAML 配置:

-
apiVersion: kubeflow.org/v1
-kind: PaddleJob
-metadata:
-    name: paddle-distributed-job
-    namespace: kubeflow
-spec:
-    paddleReplicaSpecs:
-        Worker:
-            replicas: 2
-            restartPolicy: OnFailure
-            template:
-                spec:
-                    containers:
-                        - name: paddle
-                          image: registry.baidubce.com/paddlepaddle/paddle:2.4.0rc0-cpu
-                          command:
-                              [
-                                  'python',
-                                  '-m',
-                                  'paddle.distributed.launch',
-                                  'train.py',
-                              ]
-                          args:
-                              - '--epochs=10'
-
-

配置解析

-
    -
  • Worker
      -
    • replicas:副本数,设置为 2,表示使用 2 个工作节点进行分布式训练。
    • -
    • 其他配置与单机模式类似。
    • -
    -
  • -
-

设置任务副本数

-

在创建 PaddlePaddle 分布式任务时,需要根据 paddleReplicaSpecs 中配置的副本数,正确设置 任务副本数

-
    -
  • 总副本数 = Worker 副本数
  • -
  • 本示例中:
      -
    • Worker 副本数:2
    • -
    • 总副本数:2
    • -
    -
  • -
-

因此,在任务配置中,需要将 任务副本数 设置为 2

-

提交任务

-

配置完成后,点击 提交 按钮,开始运行 PaddlePaddle 分布式任务。

-

查看运行结果

-

进入 任务详情 页面,查看任务的运行状态和资源使用情况。您可以查看每个工作节点的日志输出,确认分布式训练是否正常运行。

-

示例输出

-
Worker 0: Epoch 1, Batch 100, Loss 0.5
-Worker 1: Epoch 1, Batch 100, Loss 0.6
-...
-Training completed.
-
-

这表示 PaddlePaddle 分布式任务成功运行,模型训练完成。

-
-

小结

-

通过本教程,您学习了如何在 AI Lab 平台上创建和运行 PaddlePaddle 的单机和分布式任务。我们详细介绍了 PaddleJob 的配置方式,以及如何在任务中指定运行的命令和资源需求。希望本教程对您有所帮助,如有任何问题,请参考平台提供的其他文档或联系技术支持。

-
-

附录

-
    -
  • -

    注意事项

    -
      -
    • 训练脚本:确保 train.py(或其他训练脚本)在容器内存在。您可以通过自定义镜像、挂载持久化存储等方式将脚本放入容器。
    • -
    • 镜像选择:根据您的需求选择合适的镜像,例如使用 GPU 时选择 paddle:2.4.0rc0-gpu 等。
    • -
    • 参数调整:可以通过修改 commandargs 来传递不同的训练参数。
    • -
    -
  • -
  • -

    参考文档

    - -
  • -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/pytorch.html b/admin/baize/developer/jobs/pytorch.html deleted file mode 100644 index 9681dc852e..0000000000 --- a/admin/baize/developer/jobs/pytorch.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - - - - - - - - - -Pytorch 任务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

Pytorch 任务

-

Pytorch 是一个开源的深度学习框架,它提供了一个灵活的训练和部署环境。 -Pytorch 任务是一个使用 Pytorch 框架的任务。

-

在 AI Lab 中,我们提供了 Pytorch 任务支持和适配,您可以通过界面化操作, -快速创建 Pytorch 任务,进行模型训练。

-

任务配置介绍

-
    -
  • 任务类型同时支持 Pytorch 单机Pytorch 分布式 两种模式。
  • -
  • 运行镜像内已经默认支持 Pytorch 框架,无需额外安装。
  • -
-

任务运行环境

-

在这里我们使用 baize-notebook 基础镜像 和 关联环境 的方式来作为任务基础运行环境。

-
-

了解如何创建环境,请参考 环境列表

-
-

创建任务

-

Pytorch 单机任务

-

Pytorch 单机任务

-
    -
  1. 登录 AI Lab 平台,点击左侧导航栏中的 任务中心 ,进入 训练任务 页面。
  2. -
  3. 点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型为 Pytorch 单机,点击 下一步
  6. -
  7. 填写任务名称、描述后点击 确定
  8. -
-

运行参数

-
    -
  • 启动命令 使用 bash
  • -
  • 命令参数使用
  • -
-
import torch
-import torch.nn as nn
-import torch.optim as optim
-
-# 定义一个简单的神经网络
-class SimpleNet(nn.Module):
-    def __init__(self):
-        super(SimpleNet, self).__init__()
-        self.fc = nn.Linear(10, 1)
-
-    def forward(self, x):
-        return self.fc(x)
-
-# 创建模型、损失函数和优化器
-model = SimpleNet()
-criterion = nn.MSELoss()
-optimizer = optim.SGD(model.parameters(), lr=0.01)
-
-# 生成一些随机数据
-x = torch.randn(100, 10)
-y = torch.randn(100, 1)
-
-# 训练模型
-for epoch in range(100):
-    # 前向传播
-    outputs = model(x)
-    loss = criterion(outputs, y)
-
-    # 反向传播和优化
-    optimizer.zero_grad()
-    loss.backward()
-    optimizer.step()
-
-    if (epoch + 1) % 10 == 0:
-        print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
-
-print('Training finished.')
-
-

运行结果

-

任务提交成功,我们可以进入任务详情查看到资源的使用情况,从右上角去往 工作负载详情 ,可以查看训练过程中的日志输出

-
[HAMI-core Warn(1:140244541377408:utils.c:183)]: get default cuda from (null)
-[HAMI-core Msg(1:140244541377408:libvgpu.c:855)]: Initialized
-Epoch [10/100], Loss: 1.1248
-Epoch [20/100], Loss: 1.0486
-Epoch [30/100], Loss: 0.9969
-Epoch [40/100], Loss: 0.9611
-Epoch [50/100], Loss: 0.9360
-Epoch [60/100], Loss: 0.9182
-Epoch [70/100], Loss: 0.9053
-Epoch [80/100], Loss: 0.8960
-Epoch [90/100], Loss: 0.8891
-Epoch [100/100], Loss: 0.8841
-Training finished.
-[HAMI-core Msg(1:140244541377408:multiprocess_memory_limit.c:468)]: Calling exit handler 1
-
-

Pytorch 分布式任务

-
    -
  1. 登录 AI Lab 平台,点击左侧导航栏中的 任务中心 ,进入 任务列表 页面。
  2. -
  3. 点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型为 Pytorch 分布式,点击 下一步
  6. -
  7. 填写任务名称、描述后点击 确定
  8. -
-

运行参数

-
    -
  • 启动命令 使用 bash
  • -
  • 命令参数使用
  • -
-
import os
-import torch
-import torch.distributed as dist
-import torch.nn as nn
-import torch.optim as optim
-from torch.nn.parallel import DistributedDataParallel as DDP
-
-class SimpleModel(nn.Module):
-    def __init__(self):
-        super(SimpleModel, self).__init__()
-        self.fc = nn.Linear(10, 1)
-
-    def forward(self, x):
-        return self.fc(x)
-
-def train():
-    # 打印环境信息
-    print(f'PyTorch version: {torch.__version__}')
-    print(f'CUDA available: {torch.cuda.is_available()}')
-    if torch.cuda.is_available():
-        print(f'CUDA version: {torch.version.cuda}')
-        print(f'CUDA device count: {torch.cuda.device_count()}')
-
-    rank = int(os.environ.get('RANK', '0'))
-    world_size = int(os.environ.get('WORLD_SIZE', '1'))
-
-    print(f'Rank: {rank}, World Size: {world_size}')
-
-    # 初始化分布式环境
-    try:
-        if world_size > 1:
-            dist.init_process_group('nccl')
-            print('Distributed process group initialized successfully')
-        else:
-            print('Running in non-distributed mode')
-    except Exception as e:
-        print(f'Error initializing process group: {e}')
-        return
-
-    # 设置设备
-    try:
-        if torch.cuda.is_available():
-            device = torch.device(f'cuda:{rank % torch.cuda.device_count()}')
-            print(f'Using CUDA device: {device}')
-        else:
-            device = torch.device('cpu')
-            print('CUDA not available, using CPU')
-    except Exception as e:
-        print(f'Error setting device: {e}')
-        device = torch.device('cpu')
-        print('Falling back to CPU')
-
-    try:
-        model = SimpleModel().to(device)
-        print('Model moved to device successfully')
-    except Exception as e:
-        print(f'Error moving model to device: {e}')
-        return
-
-    try:
-        if world_size > 1:
-            ddp_model = DDP(model, device_ids=[rank % torch.cuda.device_count()] if torch.cuda.is_available() else None)
-            print('DDP model created successfully')
-        else:
-            ddp_model = model
-            print('Using non-distributed model')
-    except Exception as e:
-        print(f'Error creating DDP model: {e}')
-        return
-
-    loss_fn = nn.MSELoss()
-    optimizer = optim.SGD(ddp_model.parameters(), lr=0.001)
-
-    # 生成一些随机数据
-    try:
-        data = torch.randn(100, 10, device=device)
-        labels = torch.randn(100, 1, device=device)
-        print('Data generated and moved to device successfully')
-    except Exception as e:
-        print(f'Error generating or moving data to device: {e}')
-        return
-
-    for epoch in range(10):
-        try:
-            ddp_model.train()
-            outputs = ddp_model(data)
-            loss = loss_fn(outputs, labels)
-            optimizer.zero_grad()
-            loss.backward()
-            optimizer.step()
-
-            if rank == 0:
-                print(f'Epoch {epoch}, Loss: {loss.item():.4f}')
-        except Exception as e:
-            print(f'Error during training epoch {epoch}: {e}')
-            break
-
-    if world_size > 1:
-        dist.destroy_process_group()
-
-if __name__ == '__main__':
-    train()
-
-

任务副本数

-

注意 Pytorch 分布式 训练任务会创建一组 MasterWorker 的训练 Pod, -Master 负责协调训练任务,Worker 负责实际的训练工作。

-
-

Note

-

本次演示中:Master 副本数为 1,Worker 副本数为 2; -所以我们需要在 任务配置 中设置副本数为 3,即 Master 副本数 + Worker 副本数。 -Pytorch 会自动调谐 MasterWorker 的角色。

-
-

运行结果

-

同样,我们可以进入任务详情,查看资源的使用情况,以及每个 Pod 的日志输出。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/tensorboard.html b/admin/baize/developer/jobs/tensorboard.html deleted file mode 100644 index 33f4c5f904..0000000000 --- a/admin/baize/developer/jobs/tensorboard.html +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - - - - - - - -任务分析介绍 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

任务分析介绍

-

在 AI Lab 模块中,提供了模型开发过程重要的可视化分析工具,用于展示机器学习模型的训练过程和结果。 -本文将介绍 任务分析(Tensorboard)的基本概念、在 AI Lab 系统中的使用方法,以及如何配置数据集的日志内容。

-
-

Note

-

Tensorboard 是 TensorFlow 提供的一个可视化工具,用于展示机器学习模型的训练过程和结果。 -它可以帮助开发者更直观地理解模型的训练动态,分析模型性能,调试模型问题等。

-
-

Tensorboard

-

Tensorboard 在模型开发过程中的作用及优势:

-
    -
  • 可视化训练过程:通过图表展示训练和验证的损失、精度等指标,帮助开发者直观地观察模型的训练效果。
  • -
  • 调试和优化模型:通过查看不同层的权重、梯度分布等,帮助开发者发现和修正模型中的问题。
  • -
  • 对比不同实验:可以同时展示多个实验的结果,方便开发者对比不同模型和超参数配置的效果。
  • -
  • 追踪训练数据:记录训练过程中使用的数据集和参数,确保实验的可复现性。
  • -
-

如何创建 Tensorboard

-

在 AI Lab 系统中,我们提供了便捷的方式来创建和管理 Tensorboard。以下是具体步骤:

-

在创建时 Notebook 启用 Tensorboard

-
    -
  1. 创建 Notebook:在 AI Lab 平台上创建一个新的 Notebook。
  2. -
  3. -

    启用 Tensorboard:在创建 Notebook 的页面中,启用 Tensorboard 选项,并指定数据集和日志路径。

    -

    Tensorboard

    -
  4. -
-

在分布式任务创建及完成后启用 Tensorboard

-
    -
  1. 创建分布式任务:在 AI Lab 平台上创建一个新的分布式训练任务。
  2. -
  3. 配置 Tensorboard:在任务配置页面中,启用 Tensorboard 选项,并指定数据集和日志路径。
  4. -
  5. -

    任务完成后查看 Tensorboard:任务完成后,可以在任务详情页面中查看 Tensorboard 的链接,点击链接即可查看训练过程的可视化结果。

    -

    Tensorboard

    -
  6. -
-

在 Notebook 中直接引用 Tensorboard

-

在 Notebook 中,可以通过代码直接启动 Tensorboard。以下是一个示例代码:

-
# 导入必要的库
-import tensorflow as tf
-import datetime
-
-# 定义日志目录
-log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
-
-# 创建 Tensorboard 回调
-tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
-
-# 构建并编译模型
-model = tf.keras.models.Sequential([
-    tf.keras.layers.Flatten(input_shape=(28, 28)),
-    tf.keras.layers.Dense(512, activation='relu'),
-    tf.keras.layers.Dropout(0.2),
-    tf.keras.layers.Dense(10, activation='softmax')
-])
-
-model.compile(optimizer='adam',
-              loss='sparse_categorical_crossentropy',
-              metrics=['accuracy'])
-
-# 训练模型并启用 Tensorboard 回调
-model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test), callbacks=[tensorboard_callback])
-
-

如何配置数据集的日志内容

-

在使用 Tensorboard 时,可以记录和配置不同的数据集和日志内容。以下是一些常见的配置方式:

-

配置训练和验证数据集的日志

-

在训练模型时,可以通过 TensorFlow 的 tf.summary API 来记录训练和验证数据集的日志。以下是一个示例代码:

-
# 导入必要的库
-import tensorflow as tf
-
-# 创建日志目录
-train_log_dir = 'logs/gradient_tape/train'
-val_log_dir = 'logs/gradient_tape/val'
-train_summary_writer = tf.summary.create_file_writer(train_log_dir)
-val_summary_writer = tf.summary.create_file_writer(val_log_dir)
-
-# 训练模型并记录日志
-for epoch in range(EPOCHS):
-    for (x_train, y_train) in train_dataset:
-        # 训练步骤
-        train_step(x_train, y_train)
-        with train_summary_writer.as_default():
-            tf.summary.scalar('loss', train_loss.result(), step=epoch)
-            tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)
-
-    for (x_val, y_val) in val_dataset:
-        # 验证步骤
-        val_step(x_val, y_val)
-        with val_summary_writer.as_default():
-            tf.summary.scalar('loss', val_loss.result(), step=epoch)
-            tf.summary.scalar('accuracy', val_accuracy.result(), step=epoch)
-
-

配置自定义日志

-

除了训练和验证数据集的日志外,还可以记录其他自定义的日志内容,例如学习率、梯度分布等。以下是一个示例代码:

-
# 记录自定义日志
-with train_summary_writer.as_default():
-    tf.summary.scalar('learning_rate', learning_rate, step=epoch)
-    tf.summary.histogram('gradients', gradients, step=epoch)
-
-

Tensorboard 管理

-

在 AI Lab 中,通过各种方式创建出来的 Tensorboard 会统一展示在任务分析的页面中,方便用户查看和管理。

-

Tensorboard

-

用户可以在任务分析页面中查看 Tensorboard 的链接、状态、创建时间等信息,并通过链接直接访问 Tensorboard 的可视化结果。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/tensorflow.html b/admin/baize/developer/jobs/tensorflow.html deleted file mode 100644 index 356af0ec89..0000000000 --- a/admin/baize/developer/jobs/tensorflow.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - - - - - - - - - -Tensorflow 任务 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

Tensorflow 任务

-

Tensorflow 是除了 Pytorch 另外一个非常活跃的开源的深度学习框架,它提供了一个灵活的训练和部署环境。

-

在 AI Lab 中,我们同样提供了 Tensorflow 框架的支持和适配,您可以通过界面化操作,快速创建 Tensorflow 任务,进行模型训练。

-

任务配置介绍

-
    -
  • 任务类型同时支持 Tensorflow 单机Tensorflow 分布式 两种模式。
  • -
  • 运行镜像内已经默认支持 Tensorflow 框架,无需额外安装。
  • -
-

任务运行环境

-

在这里我们使用 baize-notebook 基础镜像 和 关联环境 的方式来作为任务基础运行环境。

-
-

了解如何创建环境,请参考 环境列表

-
-

创建任务

-

示例 TFJob 单机任务

-

Tensorflow 单机任务

-
    -
  1. 登录 AI Lab 平台,点击左侧导航栏中的 任务中心 ,进入 训练任务 页面。
  2. -
  3. 点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型为 Tensorflow 单机,点击 下一步
  6. -
  7. 填写任务名称、描述后点击 确定
  8. -
-

提前预热代码仓库

-

使用 AI Lab -> 数据集列表 ,创建一个数据集,并将远端 Github 的代码拉取到数据集中, -这样在创建任务时,可以直接选择数据集,将代码挂载到任务中。

-

演示代码仓库地址:https://github.com/d-run/training-sample-code/

-

运行参数

-
    -
  • 启动命令 使用 bash
  • -
  • 命令参数使用 python /code/tensorflow/tf-single.py
  • -
-
"""
-  pip install tensorflow numpy
-"""
-
-import tensorflow as tf
-import numpy as np
-
-# 创建一些随机数据
-x = np.random.rand(100, 1)
-y = 2 * x + 1 + np.random.rand(100, 1) * 0.1
-
-# 创建一个简单的模型
-model = tf.keras.Sequential([
-    tf.keras.layers.Dense(1, input_shape=(1,))
-])
-
-# 编译模型
-model.compile(optimizer='adam', loss='mse')
-
-# 训练模型,将 epochs 改为 10
-history = model.fit(x, y, epochs=10, verbose=1)
-
-# 打印最终损失
-print('Final loss: {' + str(history.history['loss'][-1]) +'}')
-
-# 使用模型进行预测
-test_x = np.array([[0.5]])
-prediction = model.predict(test_x)
-print(f'Prediction for x=0.5: {prediction[0][0]}')
-
-

运行结果

-

任务提交成功后,可以进入任务详情查看到资源的使用情况,从右上角去往 工作负载详情 ,可以查看训练过程中的日志输出。

-

TFJob 分布式任务

-
    -
  1. 登录 AI Lab ,点击左侧导航栏中的 任务中心 ,进入 任务列表 页面。
  2. -
  3. 点击右上角的 创建 按钮,进入任务创建页面。
  4. -
  5. 选择任务类型为 Tensorflow 分布式,点击 下一步
  6. -
  7. 填写任务名称、描述后点击 确定
  8. -
-

示例任务介绍

-

Tensorflow 单机任务

-

本次包含了三种角色:ChiefWorkerParameter Server (PS)

-
    -
  • Chief: 主要负责协调训练过程和模型检查点的保存。
  • -
  • Worker: 执行实际的模型训练。
  • -
  • PS: 在异步训练中用于存储和更新模型参数。
  • -
-

为不同的角色分配了不同的资源。ChiefWorker 使用 GPU,而 PS 使用 CPU 和较大的内存。

-

运行参数

-
    -
  • 启动命令 使用 bash
  • -
  • 命令参数使用 python /code/tensorflow/tensorflow-distributed.py
  • -
-
import os
-import json
-import tensorflow as tf
-
-class SimpleModel(tf.keras.Model):
-    def __init__(self):
-        super(SimpleModel, self).__init__()
-        self.fc = tf.keras.layers.Dense(1, input_shape=(10,))
-
-    def call(self, x):
-        return self.fc(x)
-
-def train():
-    # 打印环境信息
-    print(f"TensorFlow version: {tf.__version__}")
-    print(f"GPU available: {tf.test.is_gpu_available()}")
-    if tf.test.is_gpu_available():
-        print(f"GPU device count: {len(tf.config.list_physical_devices('GPU'))}")
-
-    # 获取分布式训练信息
-    tf_config = json.loads(os.environ.get('TF_CONFIG') or '{}')
-    task_type = tf_config.get('task', {}).get('type')
-    task_id = tf_config.get('task', {}).get('index')
-
-    print(f"Task type: {task_type}, Task ID: {task_id}")
-
-    # 设置分布式策略
-    strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy()
-
-    with strategy.scope():
-        model = SimpleModel()
-        loss_fn = tf.keras.losses.MeanSquaredError()
-        optimizer = tf.keras.optimizers.SGD(learning_rate=0.001)
-
-    # 生成一些随机数据
-    data = tf.random.normal((100, 10))
-    labels = tf.random.normal((100, 1))
-
-    @tf.function
-    def train_step(inputs, labels):
-        with tf.GradientTape() as tape:
-            predictions = model(inputs)
-            loss = loss_fn(labels, predictions)
-        gradients = tape.gradient(loss, model.trainable_variables)
-        optimizer.apply_gradients(zip(gradients, model.trainable_variables))
-        return loss
-
-    for epoch in range(10):
-        loss = train_step(data, labels)
-        if task_type == 'chief':
-            print(f'Epoch {epoch}, Loss: {loss.numpy():.4f}')
-
-if __name__ == '__main__':
-    train()
-
-

运行结果

-

同样,我们可以进入任务详情,查看资源的使用情况,以及每个 Pod 的日志输出。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/jobs/view.html b/admin/baize/developer/jobs/view.html deleted file mode 100644 index ce2eb1ec4b..0000000000 --- a/admin/baize/developer/jobs/view.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - - - - - - - - - -查看任务(Job)工作负载 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- -
-
-
- -
-
-
-
-
- - - - - - -

查看任务(Job)工作负载

-

任务创建好后,都会显示在训练任务列表中。

-
    -
  1. -

    在训练训练任务列表中,点击某个任务右侧的 -> 任务负载详情

    -

    点击菜单项

    -
  2. -
  3. -

    出现一个弹窗选择要查看哪个 Pod 后,点击 进入

    -

    弹窗进入

    -
  4. -
  5. -

    跳转到容器管理界面,可以查看容器的工作状态、标签与注解以及发生的事件。

    -

    查看详情

    -
  6. -
  7. -

    你还可以查看当前 Pod 最近一段时间的详细日志。 - 此处默认展示 100 行日志,如果要查看更详细的日志活下载日志,请点击顶部的蓝色 可观测性 文字。

    -

    日志

    -
  8. -
  9. -

    当然你还可以通过右上角的 ... ,查看当前 Pod 的 YAML、上传和下载文件。 - 以下是一个 Pod 的 YAML 示例。

    -
  10. -
-
kind: Pod
-apiVersion: v1
-metadata:
-  name: neko-tensorboard-job-test-202404181843-skxivllb-worker-0
-  namespace: default
-  uid: ddedb6ff-c278-47eb-ae1e-0de9b7c62f8c
-  resourceVersion: '41092552'
-  creationTimestamp: '2024-04-18T10:43:36Z'
-  labels:
-    training.kubeflow.org/job-name: neko-tensorboard-job-test-202404181843-skxivllb
-    training.kubeflow.org/operator-name: pytorchjob-controller
-    training.kubeflow.org/replica-index: '0'
-    training.kubeflow.org/replica-type: worker
-  annotations:
-    cni.projectcalico.org/containerID: 0cfbb9af257d5e69027c603c6cb2d3890a17c4ae1a145748d5aef73a10d7fbe1
-    cni.projectcalico.org/podIP: ''
-    cni.projectcalico.org/podIPs: ''
-    hami.io/bind-phase: success
-    hami.io/bind-time: '1713437016'
-    hami.io/vgpu-devices-allocated: GPU-29d5fa0d-935b-2966-aff8-483a174d61d1,NVIDIA,1024,20:;
-    hami.io/vgpu-devices-to-allocate: ;
-    hami.io/vgpu-node: worker-a800-1
-    hami.io/vgpu-time: '1713437016'
-    k8s.v1.cni.cncf.io/network-status: |-
-      [{
-          "name": "kube-system/calico",
-          "ips": [
-              "10.233.97.184"
-          ],
-          "default": true,
-          "dns": {}
-      }]
-    k8s.v1.cni.cncf.io/networks-status: |-
-      [{
-          "name": "kube-system/calico",
-          "ips": [
-              "10.233.97.184"
-          ],
-          "default": true,
-          "dns": {}
-      }]
-  ownerReferences:
-    - apiVersion: kubeflow.org/v1
-      kind: PyTorchJob
-      name: neko-tensorboard-job-test-202404181843-skxivllb
-      uid: e5a8b05d-1f03-4717-8e1c-4ec928014b7b
-      controller: true
-      blockOwnerDeletion: true
-spec:
-  volumes:
-    - name: 0-dataset-pytorch-examples
-      persistentVolumeClaim:
-        claimName: pytorch-examples
-    - name: kube-api-access-wh9rh
-      projected:
-        sources:
-          - serviceAccountToken:
-              expirationSeconds: 3607
-              path: token
-          - configMap:
-              name: kube-root-ca.crt
-              items:
-                - key: ca.crt
-                  path: ca.crt
-          - downwardAPI:
-              items:
-                - path: namespace
-                  fieldRef:
-                    apiVersion: v1
-                    fieldPath: metadata.namespace
-        defaultMode: 420
-  containers:
-    - name: pytorch
-      image: m.daocloud.io/docker.io/pytorch/pytorch
-      command:
-        - bash
-      args:
-        - '-c'
-        - >-
-          ls -la /root && which pip && pip install pytorch_lightning tensorboard
-          && python /root/Git/pytorch/examples/mnist/main.py
-      ports:
-        - name: pytorchjob-port
-          containerPort: 23456
-          protocol: TCP
-      env:
-        - name: PYTHONUNBUFFERED
-          value: '1'
-        - name: PET_NNODES
-          value: '1'
-      resources:
-        limits:
-          cpu: '4'
-          memory: 8Gi
-          nvidia.com/gpucores: '20'
-          nvidia.com/gpumem: '1024'
-          nvidia.com/vgpu: '1'
-        requests:
-          cpu: '4'
-          memory: 8Gi
-          nvidia.com/gpucores: '20'
-          nvidia.com/gpumem: '1024'
-          nvidia.com/vgpu: '1'
-      volumeMounts:
-        - name: 0-dataset-pytorch-examples
-          mountPath: /root/Git/pytorch/examples
-        - name: kube-api-access-wh9rh
-          readOnly: true
-          mountPath: /var/run/secrets/kubernetes.io/serviceaccount
-      terminationMessagePath: /dev/termination-log
-      terminationMessagePolicy: File
-      imagePullPolicy: Always
-  restartPolicy: Never
-  terminationGracePeriodSeconds: 30
-  dnsPolicy: ClusterFirst
-  serviceAccountName: default
-  serviceAccount: default
-  nodeName: worker-a800-1
-  securityContext: {}
-  affinity: {}
-  schedulerName: hami-scheduler
-  tolerations:
-    - key: node.kubernetes.io/not-ready
-      operator: Exists
-      effect: NoExecute
-      tolerationSeconds: 300
-    - key: node.kubernetes.io/unreachable
-      operator: Exists
-      effect: NoExecute
-      tolerationSeconds: 300
-  priorityClassName: baize-high-priority
-  priority: 100000
-  enableServiceLinks: true
-  preemptionPolicy: PreemptLowerPriority
-status:
-  phase: Succeeded
-  conditions:
-    - type: Initialized
-      status: 'True'
-      lastProbeTime: null
-      lastTransitionTime: '2024-04-18T10:43:36Z'
-      reason: PodCompleted
-    - type: Ready
-      status: 'False'
-      lastProbeTime: null
-      lastTransitionTime: '2024-04-18T10:46:34Z'
-      reason: PodCompleted
-    - type: ContainersReady
-      status: 'False'
-      lastProbeTime: null
-      lastTransitionTime: '2024-04-18T10:46:34Z'
-      reason: PodCompleted
-    - type: PodScheduled
-      status: 'True'
-      lastProbeTime: null
-      lastTransitionTime: '2024-04-18T10:43:36Z'
-  hostIP: 10.20.100.211
-  podIP: 10.233.97.184
-  podIPs:
-    - ip: 10.233.97.184
-  startTime: '2024-04-18T10:43:36Z'
-  containerStatuses:
-    - name: pytorch
-      state:
-        terminated:
-          exitCode: 0
-          reason: Completed
-          startedAt: '2024-04-18T10:43:39Z'
-          finishedAt: '2024-04-18T10:46:34Z'
-          containerID: >-
-            containerd://09010214bcf3315e81d38fba50de3943c9d2b48f50a6cc2e83f8ef0e5c6eeec1
-      lastState: {}
-      ready: false
-      restartCount: 0
-      image: m.daocloud.io/docker.io/pytorch/pytorch:latest
-      imageID: >-
-        m.daocloud.io/docker.io/pytorch/pytorch@sha256:11691e035a3651d25a87116b4f6adc113a27a29d8f5a6a583f8569e0ee5ff897
-      containerID: >-
-        containerd://09010214bcf3315e81d38fba50de3943c9d2b48f50a6cc2e83f8ef0e5c6eeec1
-      started: false
-  qosClass: Guaranteed
-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/baizectl.html b/admin/baize/developer/notebooks/baizectl.html deleted file mode 100644 index 57c4d9a84f..0000000000 --- a/admin/baize/developer/notebooks/baizectl.html +++ /dev/null @@ -1,1069 +0,0 @@ - - - - - - - - - - - - -baizectl 命令行工具使用指南 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

baizectl 命令行工具使用指南

-

baizectl 是在 AI Lab 模块中专门服务于模型开发者与数据科学家们使用的命令行工具。 -它提供了一系列命令来帮助用户管理分布式训练作业、查看任务状态、管理数据集等操作,同时支持连接 -Kubernetes 工作集群和算丰 AI 算力平台工作空间,帮助用户更高效地使用和管理 Kubernetes 平台资源。

-

安装

-

目前,baizectl 已经集成在 AI Lab 中。 -你在创建 Notebook 后,即可在 Notebook 中直接使用 baizectl

-
-

快速上手

-

基本信息

-

baizectl 命令的基本格式如下:

-
jovyan@19d0197587cc:/$ baizectl
-AI platform management tool
-
-Usage:
-  baizectl [command]
-
-Available Commands:
-  completion  Generate the autocompletion script for the specified shell
-  data        Management datasets
-  help        Help about any command
-  job         Manage jobs
-  login       Login to the platform
-  version     Show cli version
-
-Flags:
-      --cluster string     Cluster name to operate
-  -h, --help               help for baizectl
-      --mode string        Connection mode: auto, api, notebook (default "auto")
-  -n, --namespace string   Namespace to use for the operation. If not set, the default Namespace will be used.
-  -s, --server string      算丰 AI 算力平台 access base url
-      --skip-tls-verify    Skip TLS certificate verification
-      --token string       算丰 AI 算力平台 access token
-  -w, --workspace int32    Workspace ID to use for the operation
-
-Use "baizectl [command] --help" for more information about a command.
-
-

以上是 baizectl 的基本信息,用户可以通过 baizectl --help 查看帮助信息, -或者通过 baizectl [command] --help 查看具体命令的帮助信息。

-

查看版本信息

-

baizectl 支持通过 version 命令查看版本信息。

-
(base) jovyan@den-0:~$ baizectl version 
-baizectl version: v0.5.0, commit sha: ac0837c4
-
-

命令格式

-

baizectl 命令的基本格式如下:

-
baizectl [command] [flags]
-
-

其中,[command] 是具体的操作命令,如 datajob 等,[flags] 是可选的参数,用于指定操作的详细信息。

-

常用选项

-
    -
  • --cluster string:指定要操作的集群名称
  • -
  • -h, --help:显示帮助信息
  • -
  • --mode string:连接模式,可选值为 autoapinotebook(默认值为 auto
  • -
  • -n, --namespace string:指定操作的命名空间。如果未设置,将使用默认命名空间
  • -
  • -s, --server string:算丰 AI 算力平台访问基础 URL
  • -
  • --skip-tls-verify:跳过 TLS 证书验证
  • -
  • --token string:算丰 AI 算力平台访问令牌
  • -
  • -w, --workspace int32:指定操作的工作区 ID
  • -
-
-

功能介绍

-

任务管理

-

baizectl 提供了一系列命令来管理分布式训练任务,包含了查看任务列表,提交任务、查看日志、重启任务、删除任务等。

-
jovyan@19d0197587cc:/$ baizectl job
-Manage jobs
-
-Usage:
-  baizectl job [command]
-
-Available Commands:
-  delete      Delete a job
-  logs        Show logs of a job
-  ls          List jobs
-  restart     restart a job
-  submit      Submit a job
-
-Flags:
-  -h, --help            help for job
-  -o, --output string   Output format. One of: table, json, yaml (default "table")
-      --page int        Page number (default 1)
-      --page-size int   Page size (default -1)
-      --search string   Search query
-      --sort string     Sort order
-      --truncate int    Truncate output to the given length, 0 means no truncation (default 50)
-
-Use "baizectl job [command] --help" for more information about a command.
-
-

提交训练任务

-

baizectl 支持使用 submit 命令提交一个任务,用户可以通过 baizectl job submit --help 查看详细信息。

-
(base) jovyan@den-0:~$ baizectl job submit --help
-Submit a job
-
-Usage:
-  baizectl job submit [flags] -- command ...
-
-Aliases:
-  submit, create
-
-Examples:
-# Submit a job to run the command "torchrun python train.py"
-baizectl job submit -- torchrun python train.py
-# Submit a job with 2 workers(each pod use 4 gpus) to run the command "torchrun python train.py" and use the image "pytorch/pytorch:1.8.1-cuda11.1-cudnn8-runtime"
-baizectl job submit --image pytorch/pytorch:1.8.1-cuda11.1-cudnn8-runtime --workers 2 --resources nvidia.com/gpu=4 -- torchrun python train.py
-# Submit a tensorflow job to run the command "python train.py"
-baizectl job submit --tensorflow -- python train.py
-
-
-Flags:
-      --annotations stringArray                       The annotations of the job, the format is key=value
-      --auto-load-env                                 It only takes effect when executed in Notebook, the environment variables of the current environment will be automatically read and set to the environment variables of the Job, the specific environment variables to be read can be specified using the BAIZE_MAPPING_ENVS environment variable, the default is PATH,CONDA_*,*PYTHON*,NCCL_*, if set to false, the environment variables of the current environment will not be read. (default true)
-      --commands stringArray                          The default command of the job
-  -d, --datasets stringArray                          The dataset bind to the job, the format is datasetName:mountPath, e.g. mnist:/data/mnist
-  -e, --envs stringArray                              The environment variables of the job, the format is key=value
-  -x, --from-notebook string                          Define whether to read the configuration of the current Notebook and directly create tasks, including images, resources, Dataset, etc.
-                                                      auto: Automatically determine the mode according to the current environment. If the current environment is a Notebook, it will be set to notebook mode.
-                                                      false: Do not read the configuration of the current Notebook.
-                                                      true: Read the configuration of the current Notebook. (default "auto")
-  -h, --help                                          help for submit
-      --image string                                  The image of the job, it must be specified if fromNotebook is false.
-  -t, --job-type string                               Job type: PYTORCH, TENSORFLOW, PADDLE (default "PYTORCH")
-      --labels stringArray                            The labels of the job, the format is key=value
-      --max-retries int32                             number of retries before marking this job failed
-      --max-run-duration int                          Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it
-      --name string                                   The name of the job, if empty, the name will be generated automatically.
-      --paddle                                        PaddlePaddle Job, has higher priority than --job-type
-      --priority string                               The priority of the job, current support baize-medium-priority, baize-low-priority, baize-high-priority
-      --pvcs stringArray                              The pvcs bind to the job, the format is pvcName:mountPath, e.g. mnist:/data/mnist
-      --pytorch                                       Pytorch Job, has higher priority than --job-type
-      --queue string                                  The queue to used
-      --requests-resources stringArray                Similar to resources, but sets the resources of requests
-      --resources stringArray                         The resources of the job, it is a string in the format of cpu=1,memory=1Gi,nvidia.com/gpu=1, it will be set to the limits and requests of the container.
-      --restart-policy string                         The job restart policy (default "on-failure")
-      --runtime-envs baizectl data ls --runtime-env   The runtime environment to use for the job, you can use baizectl data ls --runtime-env to get the runtime environment
-      --shm-size int32                                The shared memory size of the job, default is 0, which means no shared memory, if set to more than 0, the job will use the shared memory, the unit is MiB
-      --tensorboard-log-dir string                    The tensorboard log directory, if set, the job will automatically start tensorboard, else not. The format is /path/to/log, you can use relative path in notebook.
-      --tensorflow                                    Tensorflow Job, has higher priority than --job-type
-      --workers int                                   The workers of the job, default is 1, which means single worker, if set to more than 1, the job will be distributed. (default 1)
-      --working-dir string                            The working directory of job container, if in notebook mode, the default is the directory of the current file
-
-
-

Note

-

提交任务的命令参数说明:

-
    -
  • --name: 任务名称,如果为空,则会自动生成
  • -
  • --image: 镜像名称,必须指定
  • -
  • --priority: 任务优先级,支持 高=baize-high-priority、中=baize-medium-priority、低=baize-low-priority
  • -
  • --resources: 任务资源,格式为 cpu=1 memory=1Gi,nvidia.com/gpu=1
  • -
  • --workers: 任务工作节点数,默认为 1,当设置大于 1 时,任务将会分布式运行
  • -
  • --queue: 任务队列,需要提前创建队列资源
  • -
  • --working-dir: 工作目录,如果在 Notebook 模式下,会默认使用当前文件目录
  • -
  • --datasets: 数据集,格式为 datasetName:mountPath,例如 mnist:/data/mnist
  • -
  • --shm-size: 共享内存大小,在分布式训练任务时,可以启用,表示使用共享内存,单位为 MiB
  • -
  • --labels: 任务标签,格式为 key=value
  • -
  • --max-retries: 最大重试次数,任务失败后重试次数,失败后会重启任务,默认不限制
  • -
  • --max-run-duration: 最大运行时间,任务运行时间超过指定时间后,会被系统终止,默认不限制
  • -
  • --restart-policy: 重启策略,支持 on-failureneveralways,默认为 on-failure
  • -
  • --from-notebook: 是否从 Notebook 中读取配置,支持 autotruefalse,默认为 auto
  • -
-
-
PyTorch 单机任务示例
-

提交训练任务示例,用户可以根据实际需求修改参数,以下为创建一个 PyTorch 任务的示例:

-
baizectl job submit --name demojob-v2 -t PYTORCH \
-    --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --priority baize-high-priority \
-    --resources cpu=1,memory=1Gi \
-    --workers 1 \
-    --queue default \
-    --working-dir /data \
-    --datasets fashion-mnist:/data/mnist \
-    --labels job_type=pytorch \
-    --max-retries 3 \
-    --max-run-duration 60 \
-    --restart-policy on-failure \
-    -- sleep 1000
-
-
PyTorch 分布式任务示例
-

提交训练任务示例,用户可以根据实际需求修改参数,以下为创建一个 PyTorch 任务的示例:

-
baizectl job submit --name demojob-v2 -t PYTORCH \
-    --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --priority baize-high-priority \
-    --resources cpu=1,memory=1Gi \
-    --workers 2 \   # 多任务副本会自动创建分布式任务
-    --shm-size 1024 \
-    --queue default \
-    --working-dir /data \
-    --datasets fashion-mnist:/data/mnist \
-    --labels job_type=pytorch \
-    --max-retries 3 \
-    --max-run-duration 60 \
-    --restart-policy on-failure \
-    -- sleep 1000
-
-
Tensorflow 任务示例
-

使用 -t 参数指定任务类型,以下为创建一个 Tensorflow 任务的示例:

-
baizectl job submit --name demojob-v2 -t TENSORFLOW \
-    --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --priority baize-high-priority \
-    --from-notebook auto \
-    --workers 1 \
-    --queue default \
-    --working-dir /data \
-    --datasets fashion-mnist:/data/mnist \
-    --labels job_type=pytorch \
-    --max-retries 3 \
-    --max-run-duration 60 \
-    --restart-policy on-failure \
-    -- sleep 1000
-
-

也可以使用 --job-type 或者 --tensorflow 参数指定任务类型

-
Paddle 任务示例
-
baizectl job submit --name demojob-v2 -t PADDLE \
-    --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --priority baize-high-priority \
-    --queue default \
-    --working-dir /data \
-    --datasets fashion-mnist:/data/mnist \
-    --labels job_type=pytorch \
-    --max-retries 3 \
-    --max-run-duration 60 \
-    --restart-policy on-failure \
-    -- sleep 1000
-
-

查看任务列表

-

baizectl job 支持通过 ls 命令查看任务列表,默认显示 pytroch 任务,用户可以通过 -t 指定任务类型。

-
(base) jovyan@den-0:~$ baizectl job ls  # 默认查看 pytorch 任务
- NAME        TYPE     PHASE      DURATION  COMMAND    
- demong      PYTORCH  SUCCEEDED  1m2s      sleep 60   
- demo-sleep  PYTORCH  RUNNING    1h25m28s  sleep 7200 
-(base) jovyan@den-0:~$ baizectl job ls demo-sleep  # 查看指定任务
- NAME        TYPE     PHASE      DURATION  COMMAND     
- demo-sleep  PYTORCH  RUNNING    1h25m28s  sleep 7200 
-(base) jovyan@den-0:~$ baizectl job ls -t TENSORFLOW   # 查看 tensorflow 任务
- NAME       TYPE        PHASE    DURATION  COMMAND    
- demotfjob  TENSORFLOW  CREATED  0s        sleep 1000 
-
-

任务列表默认情况下使用 table 作为展示形式,如果希望查看更多信息,可使用 jsonyaml 格式展示,可以通过 -o 参数指定。

-
(base) jovyan@den-0:~$ baizectl job ls -t TENSORFLOW -o yaml
-- baseConfig:
-    args:
-    - sleep
-    - "1000"
-    image: release.daocloud.io/baize/baize-notebook:v0.5.0
-    labels:
-      app: den
-    podConfig:
-      affinity: {}
-      kubeEnvs:
-      - name: CONDA_EXE
-        value: /opt/conda/bin/conda
-      - name: CONDA_PREFIX
-        value: /opt/conda
-      - name: CONDA_PROMPT_MODIFIER
-        value: '(base) '
-      - name: CONDA_SHLVL
-        value: "1"
-      - name: CONDA_DIR
-        value: /opt/conda
-      - name: CONDA_PYTHON_EXE
-        value: /opt/conda/bin/python
-      - name: CONDA_PYTHON_EXE
-        value: /opt/conda/bin/python
-      - name: CONDA_DEFAULT_ENV
-        value: base
-      - name: PATH
-        value: /opt/conda/bin:/opt/conda/condabin:/command:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-      priorityClass: baize-high-priority
-      queue: default
-  creationTimestamp: "2024-06-16T07:47:27Z"
-  jobSpec:
-    runPolicy:
-      suspend: true
-    tfReplicaSpecs:
-      Worker:
-        replicas: 1
-        restartPolicy: OnFailure
-        template:
-          metadata:
-            creationTimestamp: null
-          spec:
-            affinity: {}
-            containers:
-            - args:
-              - sleep
-              - "1000"
-              env:
-              - name: CONDA_EXE
-                value: /opt/conda/bin/conda
-              - name: CONDA_PREFIX
-                value: /opt/conda
-              - name: CONDA_PROMPT_MODIFIER
-                value: '(base) '
-              - name: CONDA_SHLVL
-                value: "1"
-              - name: CONDA_DIR
-                value: /opt/conda
-              - name: CONDA_PYTHON_EXE
-                value: /opt/conda/bin/python
-              - name: CONDA_PYTHON_EXE
-                value: /opt/conda/bin/python
-              - name: CONDA_DEFAULT_ENV
-                value: base
-              - name: PATH
-                value: /opt/conda/bin:/opt/conda/condabin:/command:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-              image: release.daocloud.io/baize/baize-notebook:v0.5.0
-              name: tensorflow
-              resources:
-                limits:
-                  memory: 1Gi
-                requests:
-                  cpu: "1"
-                  memory: 2Gi
-              workingDir: /home/jovyan
-            priorityClassName: baize-high-priority
-  name: demotfjob
-  namespace: ns-chuanjia-ndx
-  phase: CREATED
-  roleConfig:
-    TF_WORKER:
-      replicas: 1
-      resources:
-        limits:
-          memory: 1Gi
-        requests:
-          cpu: "1"
-          memory: 2Gi
-  totalResources:
-    limits:
-      memory: "1073741824"
-    requests:
-      cpu: "1"
-      memory: "2147483648"
-  trainingConfig:
-    restartPolicy: RESTART_POLICY_ON_FAILURE
-  trainingMode: SINGLE
-  type: TENSORFLOW
-
-

查看任务日志

-

baizectl job 支持使用 logs 命令查看任务日志,用户可以通过 baizectl job logs --help 查看详细信息。

-
(base) jovyan@den-0:~$ baizectl job logs --help
-Show logs of a job
-
-Usage:
-  baizectl job logs <job-name> [pod-name] [flags]
-
-Aliases:
-  logs, log
-
-Flags:
-  -f, --follow            Specify if the logs should be streamed.
-  -h, --help              help for logs
-  -t, --job-type string   Job type: PYTORCH, TENSORFLOW, PADDLE (default "PYTORCH")
-      --paddle            PaddlePaddle Job, has higher priority than --job-type
-      --pytorch           Pytorch Job, has higher priority than --job-type
-      --tail int          Lines of recent log file to display.
-      --tensorflow        Tensorflow Job, has higher priority than --job-type
-      --timestamps        Show timestamps
-
-
-

Note

-
    -
  • --follow 参数实时查看日志
  • -
  • --tail 参数指定查看日志的行数,默认为 50 行
  • -
  • --timestamps 参数显示时间戳
  • -
-
-

示例查看任务日志:

-
(base) jovyan@den-0:~$ baizectl job log -t TENSORFLOW tf-sample-job-v2-202406161632-evgrbrhn -f
-2024-06-16 08:33:06.083766: I tensorflow/core/util/port.cc:110] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
-2024-06-16 08:33:06.086189: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
-2024-06-16 08:33:06.132416: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
-2024-06-16 08:33:06.132903: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
-To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
-2024-06-16 08:33:07.223046: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
-Model: "sequential"
-_________________________________________________________________
- Layer (type)                Output Shape              Param #   
-=================================================================
- Conv1 (Conv2D)              (None, 13, 13, 8)         80        
-
- flatten (Flatten)           (None, 1352)              0         
-
- Softmax (Dense)             (None, 10)                13530     
-
-=================================================================
-Total params: 13610 (53.16 KB)
-Trainable params: 13610 (53.16 KB)
-Non-trainable params: 0 (0.00 Byte)
-...
-
-

删除任务

-

baizectl job 支持使用 delete 命令删除任务,并且同时支持删除多个任务。

-
(base) jovyan@den-0:~$ baizectl job delete --help
-Delete a job
-
-Usage:
-  baizectl job delete [flags]
-
-Aliases:
-  delete, del, remove, rm
-
-Flags:
-  -h, --help              help for delete
-  -t, --job-type string   Job type: PYTORCH, TENSORFLOW, PADDLE (default "PYTORCH")
-      --paddle            PaddlePaddle Job, has higher priority than --job-type
-      --pytorch           Pytorch Job, has higher priority than --job-type
-      --tensorflow        Tensorflow Job, has higher priority than --job-type
-
-

示例删除任务:

-
(base) jovyan@den-0:~$ baizectl job ls
- NAME        TYPE     PHASE      DURATION  COMMAND    
- demong      PYTORCH  SUCCEEDED  1m2s      sleep 60   
- demo-sleep  PYTORCH  RUNNING    1h20m51s  sleep 7200 
- demojob     PYTORCH  FAILED     16m46s    sleep 1000 
- demojob-v2  PYTORCH  RUNNING    3m13s     sleep 1000 
- demojob-v3  PYTORCH  CREATED    0s        sleep 1000 
-(base) jovyan@den-0:~$ baizectl job delete demojob      # 删除单个任务
-Delete job demojob in ns-chuanjia-ndx successfully
-(base) jovyan@den-0:~$ baizectl job delete demojob-v2 demojob-v3     # 删除多个任务
-Delete job demojob-v2 in ns-chuanjia-ndx successfully
-Delete job demojob-v3 in ns-chuanjia-ndx successfully
-
-

重启任务

-

baizectl job 支持使用 restart 命令重启任务,用户可以通过 baizectl job restart --help 查看详细信息。

-
(base) jovyan@den-0:~$ baizectl job restart --help
-restart a job
-
-Usage:
-  baizectl job restart [flags] job
-
-Aliases:
-  restart, rerun
-
-Flags:
-  -h, --help              help for restart
-  -t, --job-type string   Job type: PYTORCH, TENSORFLOW, PADDLE (default "PYTORCH")
-      --paddle            PaddlePaddle Job, has higher priority than --job-type
-      --pytorch           Pytorch Job, has higher priority than --job-type
-      --tensorflow        Tensorflow Job, has higher priority than --job-type
-
-

数据集管理

-

baizectl 支持管理数据集,目前支持查看数据集列表,方便在任务训练时,快速绑定数据集。

-
(base) jovyan@den-0:~$ baizectl data 
-Management datasets
-
-Usage:
-  baizectl data [flags]
-  baizectl data [command]
-
-Aliases:
-  data, dataset, datasets, envs, runtime-envs
-
-Available Commands:
-  ls          List datasets
-
-Flags:
-  -h, --help            help for data
-  -o, --output string   Output format. One of: table, json, yaml (default "table")
-      --page int        Page number (default 1)
-      --page-size int   Page size (default -1)
-      --search string   Search query
-      --sort string     Sort order
-      --truncate int    Truncate output to the given length, 0 means no truncation (default 50)
-
-Use "baizectl data [command] --help" for more information about a command.
-
-

查看数据集列表

-

baizectl data 支持通过 ls 命令查看数据集列表,默认显示 table 格式,用户可以通过 -o 参数指定输出格式。

-
(base) jovyan@den-0:~$ baizectl data ls
- NAME             TYPE  URI                                                    PHASE 
- fashion-mnist    GIT   https://gitee.com/samzong_lu/fashion-mnist.git         READY 
- sample-code      GIT   https://gitee.com/samzong_lu/training-sample-code....  READY 
- training-output  PVC   pvc://training-output                                  READY 
-
-

在提交训练任务时,可以使用 -d 或者 --datasets 参数指定数据集,例如:

-
baizectl job submit --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --datasets sample-code:/home/jovyan/code \
-    -- sleep 1000
-
-

同时挂载多个数据集,可以按照如下格式:

-
baizectl job submit --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --datasets sample-code:/home/jovyan/code fashion-mnist:/home/jovyan/data \
-    -- sleep 1000
-
-

查看依赖库(环境)

-

环境 runtime-env 是算丰 AI 算力平台的特色环境管理能力,通过将模型开发、训练任务以及推理中所需的依赖库解耦, -提供了一种更加灵活的依赖库管理方式,无需重复构建复杂的 Docker 镜像,只需选择合适的环境即可。

-

同时 runtime-env 支持热更新,动态升级,无需重新构建镜像,即可更新环境依赖库。

-

baizectl data 支持通过 runtime-env 命令查看环境列表,默认显示 table 格式,用户可以通过 -o 参数指定输出格式。

-
(base) jovyan@den-0:~$ baizectl data ls --runtime-env 
- NAME               TYPE   URI                                                    PHASE      
- fashion-mnist      GIT    https://gitee.com/samzong_lu/fashion-mnist.git         READY      
- sample-code        GIT    https://gitee.com/samzong_lu/training-sample-code....  READY      
- training-output    PVC    pvc://training-output                                  READY      
- tensorflow-sample  CONDA  conda://python?version=3.12.3                          PROCESSING 
-
-

在提交训练任务时,可以使用 --runtime-env 参数指定环境,例如:

-
baizectl job submit --image release.daocloud.io/baize/baize-notebook:v0.5.0 \
-    --runtime-env tensorflow-sample \
-    -- sleep 1000
-
-
-

高级用法

-

baizectl 支持更多高级用法,例如自动补全脚本生成、使用特定集群和命名空间、使用特定工作空间等。

-

自动补全脚本生成

-
baizectl completion bash > /etc/bash_completion.d/baizectl
-
-

上述命令生成 bash 的自动补全脚本,并将其保存到 /etc/bash_completion.d/baizectl 目录中,用户可以通过 source /etc/bash_completion.d/baizectl 加载自动补全脚本。

-

使用特定集群和命名空间

-
baizectl job ls --cluster my-cluster --namespace my-namespace
-
-

该命令将列出 my-cluster 集群中 my-namespace 命名空间下的所有作业。

-

使用特定工作空间

-
baizectl job ls --workspace 123
-
-

常见问题

-
    -
  • -

    问题:为什么无法连接到服务器?

    -

    解决方法:检查 --server 参数是否正确设置,并确保网络连接正常。 -如果服务器使用自签名证书,可以使用 --skip-tls-verify 跳过 TLS 证书验证。

    -
  • -
  • -

    问题:如何解决权限不足的问题?

    -

    解决方法:确保使用正确的 --token 参数登录,并检查当前用户是否具有相应的操作权限。

    -
  • -
  • -

    问题:为什么无法列出数据集?

    -

    解决方法:检查命名空间和工作区是否正确设置,确保当前用户有权限访问这些资源。

    -
  • -
-
-

结语

-

通过以上指南,用户可以快速上手 baizectl 命令,并在实际应用中高效地管理 AI 平台资源。 -如果有任何疑问或问题,建议参考 baizectl [command] --help 获取更多详细信息。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/baizess.html b/admin/baize/developer/notebooks/baizess.html deleted file mode 100644 index f37cc55e06..0000000000 --- a/admin/baize/developer/notebooks/baizess.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - - - - - - -baizess 换源工具使用指南 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- -
-
-
- -
-
-
-
-
- - - - - - -

baizess 换源工具使用指南

-

baizess 是 AI Lab 模块中 Notebook 内置的开箱即用的换源小工具。它提供了简洁的命令行界面,方便用户管理各种编程环境的包管理器源。 -通过 baizess,用户可以轻松切换常用包管理器的源,确保顺利访问最新的库和依赖项。该工具通过简化包源管理流程,提升了开发者和数据科学家的工作效率。

-

安装

-

目前,baizess 已经集成在 AI Lab 中。 -你在创建 Notebook 后,即可在 Notebook 中直接使用 baizess

-

快速上手

-

基本信息

-

baizess 命令的基本信息如下:

-
jovyan@19d0197587cc:/$ baizess
-source switch tool
-
-Usage:
-  baizess [command] [package-manager]
-
-Available Commands:
-  set     Switch the source of specified package manager to current fastest source
-  reset   Reset the source of specified package manager to default source
-
-Available Package-managers:
-  apt     (require root privilege)
-  conda
-  pip
-
-

命令格式

-

baizess 命令的基本格式如下:

-
baizess [command] [package-manager]
-
-

其中,[command] 是具体的操作命令,[package-manager] 用于指定操作对应的包管理器。

-

command

-
    -
  • set:备份源,测速,将所指定的包管理器的源切换为测速结果最快的国内源。
  • -
  • reset:将所指定的包管理器重置为默认源。
  • -
-

目前支持的 package-manager

-
    -
  • apt (源的切换与重置需要root权限)
  • -
  • conda (原先的源将被备份在/etc/apt/backup/
  • -
  • pip (更新后源信息将被写入~/.condarc
  • -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/create.html b/admin/baize/developer/notebooks/create.html deleted file mode 100644 index a9ac9f3692..0000000000 --- a/admin/baize/developer/notebooks/create.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - - - - - - -创建 Notebook - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

创建 Notebook

-

Notebook 提供了一个在线的 Web 交互式编程环境,方便开发者快速进行数据科学和机器学习实验。

-

进入开发者控制台后,开发者可以在不同集群、命名空间中创建和管理 Notebook。

-
    -
  1. -

    在左侧导航栏中点击 Notebooks ,进入 Notebook 列表。点击右侧的 创建 按钮。

    -

    点击创建

    -
  2. -
  3. -

    系统会预先填充基础配置数据,包括要部署的集群、命名空间、Notebook 镜像地址、队列、资源、用户目录等。 - 调整这些参数后点击 确定

    -

    填写参数

    -
  4. -
  5. -

    刚创建的 Notebook 状态为 等待中 ,片刻后将变为 运行中 ,默认最新的位于列表顶部。

    -

    创建成功

    -
  6. -
  7. -

    点击右侧的 ,可以执行更多操作:更新参数、启动/暂停、克隆 Notebook 、查看工作负载详情和删除。

    -
  8. -
-
-

Note

-

如果选择纯 CPU 资源后,发现挂载了节点上的所有 GPU 卡,可以尝试添加 container env 来解决此问题:

-
NVIDIA_VISIBLE_DEVICES=""
-
-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/delete.html b/admin/baize/developer/notebooks/delete.html deleted file mode 100644 index 4541278b76..0000000000 --- a/admin/baize/developer/notebooks/delete.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - - - -删除 Notebook - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

删除 Notebook

-

如果发现 Notebook 冗余、过期或因其他缘故不再需要,可以从 Notebook 列表中删除。

-
    -
  1. -

    在 Notebook 列表右侧点击 ,在弹出菜单中选择 删除

    -

    删除

    -
  2. -
  3. -

    在弹窗中确认要删除的任务,输入 Notebook 名称后点击 删除

    -

    确认删除

    -
  4. -
  5. -

    屏幕提示删除成功,该 Notebook 从列表中消失。

    -

    已删除

    -
  6. -
-
-

Caution

-

Notebook 一旦删除将不可恢复,请谨慎操作。

-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/notebook-auto-close.html b/admin/baize/developer/notebooks/notebook-auto-close.html deleted file mode 100644 index 4e09c37375..0000000000 --- a/admin/baize/developer/notebooks/notebook-auto-close.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - - - - - - -Notebook 闲置超时自动关机 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- -
-
-
- -
-
-
-
-
- - - - - - -

Notebook 闲置超时自动关机

-

在默认情况下,为优化资源利用率,AI Lab 启用了 Notebook 闲置超时自动关机功能; -当 Notebook 长时间无操作时,系统会自动关机 Notebook,释放资源。

-
    -
  • 优点:通过这个方式,可以极大减少因为长时间无操作导致的资源浪费,提高资源利用效率。
  • -
  • 缺点:如果 Notebook 未配置相关备份策略,可能导致数据丢失。
  • -
-
-

Note

-

当前,此功能为集群级别配置,默认开启,默认超时时长为 30 分钟。

-
-

配置变更

-

目前配置修改方式为手动修改,后续会提供更加便捷的配置方式。

-

修改工作集群中 baize-agent 的部署参数,正确的修改方式为更新 Helm 应用,

-

界面化修改

-
    -
  1. -

    在集群管理界面找到对应的工作集群,进入集群详情,选择 Helm 应用 ,在 baize-system - 命名空间下找到 baize-agent,在右上角点击 更新 按钮:

    -

    baize-agent

    -
  2. -
  3. -

    如图修改 YAML 代码:

    -

    baize-agent

    -
    ...
    -notebook-controller:
    -  culling_enabled: false
    -  cull_idle_time: 120
    -  idleness_check_period: 1
    -...
    -
    -
  4. -
  5. -

    确认参数修改成功后,点击 下一步确定

    -
  6. -
-

命令行修改

-

进入控制台以后,使用 helm upgrade 命令更改配置:

-
# 设定版本号
-export VERSION=0.8.0
-
-# 更新 Helm Chart 
-helm upgrade --install baize-agent baize/baize-agent \
-    --namespace baize-system \
-    --create-namespace \
-    --set global.imageRegistry=release.daocloud.io \
-    --set notebook-controller.culling_enabled=true \    # 开启自动关机,默认为 true
-    --set notebook-controller.cull_idle_time=120 \      # 设置闲置超时时间为 120 分钟,默认为 30 分钟
-    --set notebook-controller.idleness_check_period=1 \ # 设置检查间隔为 1 分钟,默认为 1 分钟
-    --version=$VERSION
-
-
-

Note

-

为了避免自动关机后丢失数据,您可以将 AI Lab 升级到 v0.8.0 及更高版本,在 Notebook 配置中启用关机自动保存功能。

-
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/notebook-with-envs.html b/admin/baize/developer/notebooks/notebook-with-envs.html deleted file mode 100644 index 6fda45f1b6..0000000000 --- a/admin/baize/developer/notebooks/notebook-with-envs.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - - - - - - - - - -在 Notebook 中使用环境 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

在 Notebook 中使用环境

-

环境管理是 AI Lab 的重要功能之一,通过在 Notebook 中关联对应的环境,可以快速切换不同的环境,方便用户进行开发和调试。

-

创建 Notebook 时选择环境

-

在创建 Notebook 时,可以选择一个或多个的环境 Envs 。如果没有合适的环境,可以去 环境管理 中创建一个新的环境。

-

Attach-Envs

-
-

如何创建环境,请参考环境管理

-
-

在 Notebook 使用环境

-
-

Note

-

在 Notebook 中,我们同时提供了 condamamba 两种,用户可以根据自己的需求选择合适的环境管理工具。

-
-

AI Lab 中,我们采用了 conda 环境管理工具,用户可以在 Notebook 中通过 !conda env list 命令查看当前环境列表。

-
(base) jovyan@chuanjia-jupyter-0:~/yolov8$ conda env list
-# conda environments:
-#
-dkj-python312-pure       /opt/baize-runtime-env/dkj-python312-pure/conda/envs/dkj-python312-pure
-python-3.10              /opt/baize-runtime-env/python-3.10/conda/envs/python-3.10
-torch-smaple             /opt/baize-runtime-env/torch-smaple/conda/envs/torch-smaple
-base                  *  /opt/conda     # 当前激活的环境
-baize-base               /opt/conda/envs/baize-base
-
-

这个命令会列出所有的 conda 环境,并在当前激活的环境前面加上一个星号(*)。

-

JupyterLab 的 Kernel 环境管理

-

在 Jupyterlab 中,我们自动将 Notebook 关联的环境绑定到 Kernel 列表中,用户可以通过 Kernel 快速切换环境。

-

Switch-Envs

-

通过以上办法,可以同时在一个 Notebook 中使用不同编写和调试算法。

-

Terminal 切换环境

-
-

AI Lab 的 Notebook 目前也已经支持了 VSCode。

-
-

如果您更喜欢在 Terminal 中管理和切换环境,可以安装如下步骤:

-

在首次启动并使用 Notebook 时,需要先执行 conda init,然后再执行 conda activate <env_name> 切换到对应的环境。

-
(base) jovyan@chuanjia-jupyter-0:~/yolov8$ conda init bash# 初始化 bash 环境, 仅首次使用需要执行
-no change     /opt/conda/condabin/conda
- change     /opt/conda/bin/conda
- change     /opt/conda/bin/conda-env
- change     /opt/conda/bin/activate
- change     /opt/conda/bin/deactivate
- change     /opt/conda/etc/profile.d/conda.sh
- change     /opt/conda/etc/fish/conf.d/conda.fish
- change     /opt/conda/shell/condabin/Conda.psm1
- change     /opt/conda/shell/condabin/conda-hook.ps1
- change     /opt/conda/lib/python3.11/site-packages/xontrib/conda.xsh
- change     /opt/conda/etc/profile.d/conda.csh
- change     /home/jovyan/.bashrc
- action taken.
-Added mamba to /home/jovyan/.bashrc
-
-==> For changes to take effect, close and re-open your current shell. <==
-
-(base) jovyan@chuanjia-jupyter-0:~/yolov8$ source ~/.bashrc  # 重新加载 bash 环境
-(base) jovyan@chuanjia-jupyter-0:~/yolov8$ conda activate python-3.10   # 切换到 python-3.10 环境
-(python-3.10) jovyan@chuanjia-jupyter-0:~/yolov8$ conda env list
-
-              mamba version : 1.5.1
-# conda environments:
-#
-dkj-python312-pure       /opt/baize-runtime-env/dkj-python312-pure/conda/envs/dkj-python312-pure
-python-3.10           *  /opt/baize-runtime-env/python-3.10/conda/envs/python-3.10    # 当前激活的环境
-torch-smaple             /opt/baize-runtime-env/torch-smaple/conda/envs/torch-smaple
-base                     /opt/conda
-baize-base               /opt/conda/envs/baize-base
-
-
-

如果您更喜欢使用 mamba ,这里需要使用 mamaba initmamba activate <env_name>

-
-

查看环境中的包

-

通过不同环境管理的一个很重要的功能是,可以在一个 Notebook 中通过快速切换环境,使用不用的包。

-

我们可以通过下方的命令来使用 conda 查看当前环境中的所有包。

-
(python-3.10) jovyan@chuanjia-jupyter-0:~/yolov8$ conda list
-# packages in environment at /opt/baize-runtime-env/python-3.10/conda/envs/python-3.10:
-#
-# Name                    Version                   Build  Channel
-_libgcc_mutex             0.1                        main    defaults
-_openmp_mutex             5.1                       1_gnu    defaults
-... # 省略部分输出
-idna                      3.7             py310h06a4308_0    defaults
-ipykernel                 6.28.0          py310h06a4308_0    defaults
-ipython                   8.20.0          py310h06a4308_0    defaults
-ipython_genutils          0.2.0              pyhd3eb1b0_1    defaults
-jedi                      0.18.1          py310h06a4308_1    defaults
-jinja2                    3.1.4           py310h06a4308_0    defaults
-jsonschema                4.19.2          py310h06a4308_0    defaults
-jsonschema-specifications 2023.7.1        py310h06a4308_0    defaults
-jupyter_client            7.4.9           py310h06a4308_0    defaults
-jupyter_core              5.5.0           py310h06a4308_0    defaults
-jupyter_events            0.8.0           py310h06a4308_0    defaults
-jupyter_server            2.10.0          py310h06a4308_0    defaults
-jupyter_server_terminals  0.4.4           py310h06a4308_1    defaults
-jupyterlab_pygments       0.2.2           py310h06a4308_0    defaults
-... # 省略部分输出
-xz                        5.4.6                h5eee18b_1    defaults
-yaml                      0.2.5                h7b6447c_0    defaults
-zeromq                    4.3.5                h6a678d5_0    defaults
-zlib                      1.2.13               h5eee18b_1    defaults
-
-

更新环境的包

-

目前,可以通过在 AI Lab 的界面中 环境管理 来更新环境中的包。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/notebook-with-ssh.html b/admin/baize/developer/notebooks/notebook-with-ssh.html deleted file mode 100644 index 4033a26c50..0000000000 --- a/admin/baize/developer/notebooks/notebook-with-ssh.html +++ /dev/null @@ -1,658 +0,0 @@ - - - - - - - - - - - - -Notebook SSH 访问指南 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

Notebook SSH 访问指南

-

AI Lab 提供的 Notebook 支持在本地通过 SSH 的方式访问;

-

通过简单的配置,即可使用 SSH 访问 Jupyter Notebook 的功能。 -无论您是使用 Windows、Mac 还是 Linux 操作系统,都可以按照以下步骤进行操作。

-

配置 SSH 访问凭证

-

生成 SSH 密钥对

-

首先,您需要在您的计算机上生成 SSH 公钥和私钥对。这个密钥对将用于认证过程,确保安全访问。

-
-
-
-
    -
  1. 打开终端
  2. -
  3. -

    输入命令:

    -
    ssh-keygen -t rsa -b 4096
    -
    -
  4. -
  5. -

    当系统提示您“Enter a file in which to save the key”,您可以直接敲击 Enter 键使用默认路径,或者指定一个新的路径。

    -
  6. -
  7. 接下来,系统会提示您输入密码(可选),这将增加一个额外的安全层。如果选择输入密码,请记住这个密码,因为每次使用密钥时都会需要它。
  8. -
-
-
-
    -
  1. 安装 Git Bash(如果您尚未安装)
  2. -
  3. 打开 Git Bash
  4. -
  5. -

    输入命令:

    -
    ssh-keygen -t rsa -b 4096
    -
    -
  6. -
  7. -

    同 Mac/Linux 步骤

    -
  8. -
-
-
-
-

添加 SSH 公钥到个人中心

-
-

Note

-

具体操作可以参考:配置 SSH 公钥

-
-
    -
  1. 打开生成的公钥文件,通常位于 ~/.ssh/id_rsa.pub(如果您没有更改默认路径)
  2. -
  3. 复制公钥内容
  4. -
  5. 登录到算丰 AI 算力平台, 然后右上角帐号点开,选择个人中心
  6. -
  7. 在 SSH 公钥配置页,添加你本地生成的公钥文件
  8. -
  9. 保存更改
  10. -
-

在 Notebook 中开启 SSH 访问

-
    -
  1. 登录到 Jupyter Notebook 的 Web 界面。
  2. -
  3. 寻找您想要启用 SSH 访问的 Notebook。
  4. -
  5. 在 Notebook 的设置或详情页面,找到 开启 SSH 访问 的选项并启用它。
  6. -
  7. 记录或复制显示的 SSH 访问命令。这个命令将用于后续步骤中的 SSH 连接。
  8. -
-

不同环境下的 SSH 访问方式

-

访问示例

-

假设您获得的 SSH 访问命令如下:

-
    # ssh {USERNAME}@{CLUSTER}.{NAMESPACE}.{NOTEBOOK_NAME}@{UI_LOGIN_IP} -p {UI_LOGIN_IP}
-    ssh baizeuser01@gpu-cluster.demo.demo-notebook@10.20.100.201 -p 80 -i private_key
-
-

请将 USERNAME 替换为您的用户名,UI_LOGIN_IP 替换为实际的主机名,UI_LOGIN_IP 替换为实际的端口号。

-

Windows

-

推荐使用 PuTTY 或 Git Bash 进行 SSH 连接。

-
-
-
-
    -
  1. 打开 PuTTY
  2. -
  3. Host Name (or IP address) 栏输入 mockhost(实际的主机名)
  4. -
  5. 输入端口号 2222(实际的端口号)
  6. -
  7. 点击 Open 开始连接
  8. -
  9. 第一次连接时,可能会提示验证服务器的身份,点击 Yes
  10. -
-
-
-
    -
  1. 打开 Git Bash
  2. -
  3. -

    输入访问命令:

    -
        # ssh {USERNAME}@{CLUSTER}.{NAMESPACE}.{NOTEBOOK_NAME}@{UI_LOGIN_IP} -p {UI_LOGIN_IP}
    -    ssh baizeuser01@gpu-cluster.demo.demo-notebook@10.20.100.201 -p 80 -i private_key
    -
    -
  4. -
  5. -

    按 Enter 键

    -
  6. -
-
-
-
-

Mac/Linux

-
    -
  1. 打开终端。
  2. -
  3. -

    输入访问命令:

    -
        # ssh {USERNAME}@{CLUSTER}.{NAMESPACE}.{NOTEBOOK_NAME}@{UI_LOGIN_IP} -p {UI_LOGIN_IP}
    -    ssh baizeuser01@gpu-cluster.demo.demo-notebook@10.20.100.201 -p 80 -i private_key
    -
    -
  4. -
  5. -

    如果系统提示您接受主机的身份,请输入yes

    -
  6. -
-

配合 IDE 实现远程开发

-

除了使用命令行工具进行 SSH 连接,您还可以利用现代 IDE 如 Visual Studio Code (VSCode) 和 PyCharm 的 SSH 远程连接功能, -直接在本地 IDE 中开发并利用远程服务器的资源。

-
-
-
-

VSCode 通过 Remote - SSH 扩展支持 SSH 远程连接,允许您直接在本地 VSCode 环境中编辑远程服务器上的文件,并运行命令。

-

操作步骤为:

-
    -
  1. 确保您已安装 VSCode 和 Remote - SSH 扩展。
  2. -
  3. 打开 VSCode,点击左侧活动栏底部的远程资源管理器图标。
  4. -
  5. 选择 Remote-SSH: Connect to Host... 选项,然后点击 + Add New SSH Host...
  6. -
  7. -

    输入 SSH 连接命令,例如:

    -
        # ssh {USERNAME}@{CLUSTER}.{NAMESPACE}.{NOTEBOOK_NAME}@{UI_LOGIN_IP} -p {UI_LOGIN_IP}
    -    ssh baizeuser01@gpu-cluster.demo.demo-notebook@10.20.100.201 -p 80 -i private_key
    -
    -
  8. -
  9. -

    敲击 Enter 键。请将 username、mockhost 和 2222 替换为实际的用户名、主机名和端口号。

    -
  10. -
  11. 选择一个配置文件来保存此 SSH 主机,通常选择默认即可。
  12. -
-

完成后,您的 SSH 主机将添加到 SSH 目标列表中。点击您的主机进行连接。 -如果是第一次连接,可能会提示您验证主机的指纹。接受后,您将被要求输入密码(如果 SSH 密钥设置了密码)。 -连接成功后,您可以像在本地开发一样在 VSCode 中编辑远程文件,并利用远程资源。

-
-
-

PyCharm Professional 版支持通过 SSH 连接到远程服务器,并在本地 PyCharm 中直接开发。

-

操作步骤为:

-
    -
  1. 打开 PyCharm,并打开或创建一个项目
  2. -
  3. 选择 File -> Settings (在 Mac 上是 PyCharm -> Preferences
  4. -
  5. 在设置窗口中,导航到 Project: YourProjectName -> Python Interpreter
  6. -
  7. -

    点击右上角的齿轮图标,选择 Add...

    -
      -
    • 在弹出的窗口中,选择 SSH Interpreter
    • -
    • 输入远程主机的信息:主机名(mockhost)、端口号(2222)、用户名(username)。 -请使用您的实际信息替换这些占位符。
    • -
    • 点击 Next ,PyCharm 将尝试连接到远程服务器。如果连接成功,您将被要求输入密码或选择私钥文件。
    • -
    -
  8. -
  9. -

    配置完成后,点击 Finish 。现在,您的 PyCharm 将使用远程服务器上的 Python 解释器。

    -
  10. -
-
-
-
-

安全限制

-

在同一个 Workspace 内,任意用户都可以通过自己的 SSH 访问凭证来登录到启用了 SSH 的 Notebook。 -这意味着,只要用户配置了自己的 SSH 公钥到个人中心,并且 Notebook 启用了 SSH 访问,就可以使用 SSH 进行安全连接。

-

请注意,不同用户的访问权限可能会根据 Workspace 的配置而有所不同。确保您了解并遵守您所在组织的安全和访问策略。

-
-

通过遵循上述步骤,您应该能够成功配置并使用 SSH 访问 Jupyter Notebook。如果遇到任何问题,请参考系统帮助文档或联系系统管理员。

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/start-pause.html b/admin/baize/developer/notebooks/start-pause.html deleted file mode 100644 index a8b2a811f9..0000000000 --- a/admin/baize/developer/notebooks/start-pause.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - -启动和暂停 Notebook - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

启动和暂停 Notebook

-

Notebook 创建成功后,通常会有几个状态:

-
    -
  • 等待中
  • -
  • 运行中
  • -
  • 已停止
  • -
-

如果某个 Notebook 的状态为 已停止 ,在列表右侧点击 ,在弹出菜单中选择 启动

-

启动

-

此 Notebook 将进入运行队列中,状态变为 等待中 ,如果一切正常,片刻后其状态将变为 运行中

-

如果使用结束,可以从菜单中选择 暂停 ,将其状态变为 已停止

- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/notebooks/view.html b/admin/baize/developer/notebooks/view.html deleted file mode 100644 index 8966e01f93..0000000000 --- a/admin/baize/developer/notebooks/view.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - - - - - - - -Notebook 工作负载 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

Notebook 工作负载

-

如果想要查看某个 Notebook 的工作负载,可以执行以下操作:

-
    -
  1. -

    在 Notebook 列表右侧点击 ,在弹出菜单中选择 工作负载详情

    -

    删除

    -
  2. -
  3. -

    跳转到有状态工作负载(StatefulSet)列表,可以查看:

    -
      -
    • 容器组 Pod 的运行状态、IP、资源请求和使用情况
    • -
    • 容器配置信息
    • -
    • 访问方式:ClusterIP、NodePort
    • -
    • 调度策略:节点和工作负载的亲和性、反亲和性
    • -
    • 标签与注解:工作负载、Pod 的标签与注解键值对
    • -
    • 弹性伸缩:支持 HPA、CronHPA、VPA 等方式
    • -
    • 事件列表:警告、通知等消息
    • -
    -

    确认删除

    -
  4. -
  5. -

    在 StatefulSet 列表,点击右侧的 ,可以针对 Pod 执行更多操作。

    -

    已删除

    -
  6. -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/baize/developer/quick-start.html b/admin/baize/developer/quick-start.html deleted file mode 100644 index 193f6d8a14..0000000000 --- a/admin/baize/developer/quick-start.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - - - - - - -快速入门 - 豐收二號檔案站 - - - - - - - - - - - - -
- - 跳转至 - -
-
-
-
- - -
-
-
-
- - -
-
- - - - - - -

快速入门

-

本文提供了简单的操作手册以便用户使用 AI Lab 进行数据集、Notebook、任务训练的整个开发、训练流程。

-

准备数据集

-

点击 数据管理 -> 数据集 ,选择 创建 按钮,分别创建以下三个数据集。

-

数据集:训练代码

- -

训练代码的数据集

-
-

Note

-

目前仅支持读写模式为 ReadWriteManyStorageClass,请使用 NFS 或者推荐的 JuiceFS

-
-

数据集:训练数据

-

本次训练使用的数据为 https://github.com/zalandoresearch/fashion-mnist.git, -这是 Fashion-MNIST 数据集。

-

如果是中国境内的用户,可以使用 Gitee 加速:https://gitee.com/samzong_lu/fashion-mnist.git

-

训练数据的数据集

-
-

Note

-

如果未创建训练数据的数据集,通过训练脚本也会自动下载;提前准备训练数据可以提高训练速度。

-
-

数据集:空数据集

-

AI Lab 支持将 PVC 作为数据集的数据源类型,所以创建一个空 PVC 绑定到数据集后,可将空数据集作为存放后续训练任务的输出数据集,存放模型和日志。

-

空数据集

-

环境依赖: tensorflow

-

脚本在运行时,需要依赖 Tensorflow 的 Python 库,可以使用 AI Lab 的环境依赖管理功能,提前将需要的 Python 库下载和准备完成,无需依赖镜像构建

-
-

参考 环境依赖 的操作方式,添加一个 CONDA 环境.

-
-
name: tensorflow
-channels:
-  - defaults
-  - conda-forge
-dependencies:
-  - python=3.12
-  - tensorflow
-prefix: /opt/conda/envs/tensorflow
-
-

创建环境依赖

-
-

Note

-

等待环境预热成功后,只需要将此环境挂载到 Notebook、训练任务中,使用 AI Lab 提供的基础镜像就可以

-
-

使用 Notebook 调试脚本

-

准备开发环境,点击导航栏的 Notebooks ,点击 创建

-
    -
  • -

    准备好的三个数据集进行关联,挂载路径请参照下图填写,注意将需要使用的空数据集在 输出数据集位置配置

    -

    挂载路径

    -
  • -
  • -

    选择并绑定环境依赖包

    -

    等待 Notebook 创建成功,点击列表中的访问地址,进入 Notebook。并在 Notebook 的终端中执行以下命令进行任务训练。

    -

    进入 notebook

    -
    -

    Note

    -

    脚本使用 Tensorflow,如果忘记关联依赖库,也可以临时用 pip install tensorflow 安装。

    -
    python /home/jovyan/code/tensorflow/tf-fashion-mnist-sample/train.py
    -
    -
    -
  • -
-

创建训练任务

-
    -
  1. 点击导航栏的 任务中心 -> 训练任务 ,创建一个 Tensorflow 单机任务
  2. -
  3. 先填写基本参数后,点击 下一步
  4. -
  5. -

    在任务资源配置中,正确配置任务资源后,点击 下一步

    -
      -
    • 镜像:如果前序环境依赖包准备好了,使用默认镜像即可; 如果未准备,要确认镜像内有 tensorflow 的 Python 库
    • -
    • shell:使用 bash 即可
    • -
    • -

      启用命令:

      -
      /home/jovyan/code/tensorflow/tf-fashion-mnist-sample/train.py
      -
      -
    • -
    -
  6. -
  7. -

    在高级配置中,启用 任务分析(Tensorboard) ,点击 确定

    -
    -

    Note

    -

    日志所在位置为输出数据集的 /home/jovyan/model/train/logs/

    -
    -

    高级配置

    -
  8. -
  9. -

    返回训练任务列表,等到状态变为 成功 。点击列表右侧的 ,可以查看详情、克隆任务、更新优先级、查看日志和删除等操作。

    -

    提交训练任务

    -
  10. -
  11. -

    成功创建任务后,在左侧导航栏点击 任务分析 ,可以查看任务状态并对任务训练进行调优。

    -

    查看任务

    -
  12. -
- - -
-
- -
- -
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/admin/share/notebook.html b/admin/share/notebook.html index 1582859898..df699f2904 100644 --- a/admin/share/notebook.html +++ b/admin/share/notebook.html @@ -367,7 +367,7 @@

通过 SSH 访问 Notebook 实例ssh

-

下一步:创建训练任务

+

下一步:创建训练任务