开发自定义微调模板

模板结构概述

自定义微调模板应包含必要的配置文件和训练脚本。例如,YOLOv5 目标检测微调模板(finetune-object-detection)通常具有如下目录结构:

  • 核心训练脚本: 负责模型训练逻辑。
  • 工具脚本: 提供与平台交互的辅助函数。
  • 配置文件: 指定训练环境和参数。

核心职责与脚本要求

您的主要职责是实现自定义微调训练脚本(通常命名为 run.sh)。为确保您的脚本能顺利集成到 Alauda AI 平台子任务中,请遵循以下三项关键要求:

1. 引入平台工具脚本

在主训练脚本开头(如 run.sh),加入以下命令以加载平台提供的工具函数:

#!/usr/bin/env bash

set -ex
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
source ${SCRIPT_DIR}/util.sh

目的: util.sh 脚本提供了平台标准函数,如参数获取、路径解析和日志记录。请参考示例,确保您的脚本正确使用内置参数和控制流程。

2. 模型输出路径通知

在训练函数退出前,必须执行以下命令,将微调后模型的输出路径传递给后续任务(如模型上传):

echo "${MODEL_PATH}/${OUTPUT_DIR}" > ${TASK_META_OUTPUT_PATH_FILE}

目的: 该机制使平台能够识别并收集最终训练产物。请确保路径正确构造(基础模型路径 + 相对输出目录)。

3. 脚本执行权限

在将微调模板上传至 GitLab 模型仓库前,确保所有 Bash 脚本文件(尤其是 run.sh 及其依赖的 .sh 文件)具有可执行权限。
操作: 通过执行 chmod +x *.sh 或针对单个文件设置权限。

关键参数参考表

在实现微调模板时,请参考下表了解模板目录及脚本中的核心参数及其含义。这些参数定义了基础模型、数据集与平台环境的关联方式。
建议: 在编写自定义模板前,先学习官方示例模板,了解参数在实际训练流程中的使用。

config.yaml – 模板 YAML 文件

参数描述示例备注
image微调训练所需的 Docker 镜像docker.io/alaudadockerhub/yolov5-runtime:v0 .1.0
tool-image数据下载和上传的工具镜像docker.io/alaudadockerhub/git-tool:v0 .1.0
sub-templates定义微调子模板(例如区分 LoRA 部分微调和全量微调,分别用 lorafull 模板)支持多语言(zh/en)描述
params参数列表。在 params 下,指定每个子模板名称,并在各子模板下以列表形式定义参数default:指定 sub-templates 中的子模板名称
参数详情:
name:参数名(如 img
env:对应环境变量
value:默认值
display:UI 中的提示文本

util.sh – 工具脚本

参数描述示例备注
WORKSPACE_PATH微调工作空间路径/mnt/workspace内置任务参数
FT_TASK_META_DIR微调任务元数据目录;存储子任务间共享的元数据/mnt/workspace/.task内置任务参数
SIGNAL_FILE_PREPARE_DONE数据下载子任务完成后生成的信号文件/mnt/workspace/.task/prepare.done内置任务参数
SIGNAL_FILE_EXPORT_DONE训练任务完成后生成的信号文件/mnt/workspace/.task/export.done内置任务参数
TASK_META_TEMPLATE_PATH_FILE数据下载子任务保存微调模板路径供后续任务使用的文件/mnt/workspace/.task/meta_template_path内置任务参数
BASE_MODEL_URL模型仓库中基础模型路径(不含域名)fy-c1/amlmodels/yolov5环境变量
MODEL_TAG下载的标签v0.1.0环境变量,仅按标签下载
MODEL_BRANCH下载的分支main环境变量,指定 commit 时必填
MODEL_COMMIT下载的提交 ID6635e1b9环境变量
DATASET_URL模型仓库中数据集路径(不含域名)fy-c1/amldatasets/coco128环境变量
DATASET_TAG下载的标签v0.1.0环境变量,仅按标签下载
DATASET_BRANCH下载的分支main环境变量,指定 commit 时必填
DATASET_COMMIT下载的提交 ID6635e1b9环境变量
DATASET_S3_URL数据集的 S3 URL(必须以桶名结尾)http://minio-service.kubeflow.svc.cluster.local:9000 /finetune环境变量。若同时设置 DATASET_S3_URL 和 DATASET_URL,则优先使用 S3
DATASET_S3_PATHS3 中数据集存储路径(不含桶名)coco128环境变量
DATASET_S3_ACCESSIDS3 访问 ID环境变量
DATASET_S3_ACCESSKEYS3 访问密钥环境变量
OUTPUT_MODEL_URL上传模型在模型仓库中的目标路径fy-c1/amlmodels/yolov5_ft_coco128环境变量
GIT_BASEGitLab 基础 URLhttps://aml-gitlab.alaudatech.net环境变量
GIT_USERGitLab 用户环境变量
GIT_TOKENGitLab 访问令牌环境变量
N_RANKS分布式作业的并行度2分布式作业参数
RANK当前任务的 rank0分布式作业参数
WORLD_SIZE训练中进程总数2分布式作业参数
MASTER_ADDR主进程地址分布式作业参数
MASTER_PORT主进程端口8888(默认)分布式作业参数

run.sh – 模板执行脚本

参数描述备注
set_extra_params通过环境变量设置参数
set_finetune_params通过环境变量设置超参数
launch_training主要微调训练函数针对多种训练场景,可定义具体函数(如 CPU 执行、单节点多 GPU 或多节点多 GPU)。详见 run.sh 示例。
export_weights生成/导出训练得到的模型