你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

Microsoft Foundry 中的交互式培训(预览版)入门

Important

本文中标记为预览的项目目前为预览版。 此预览版在没有服务级别协议的情况下提供,Microsoft不建议将其用于生产工作负荷。 某些功能可能不受支持,或者可能具有受限功能。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。

Important

交互式训练需要显式访问审批。 通过 预览版注册表单 请求访问权限,并在创建训练会话之前等待审批。

在本快速入门中,你将克隆示例存储库,并针对 GSM8K 数学问题运行强化学习(RL)方案。 该流程生成响应,评分其正确性,并在 Microsoft Foundry 中更新 Qwen3.8-27B 的低秩适配(LoRA)适配器。

在本地运行Python驱动程序;Foundry 运行模型操作。 此测试运行检查训练、评估和检查点保存是否正常工作。 这不是模型质量基准,不需要本地 GPU。

如果没有 Azure 订阅,可以创建一个免费帐户。

Prerequisites

  • 具有已批准的交互式培训预览访问权限和 容量的Qwen/Qwen3.8-27B。 检查 支持的模型 和 区域。
  • 用于训练时为 Foundry 用户 角色;如果还部署微调模型,则为 Foundry 所有者 角色。 请参阅 Microsoft Foundry 的基于角色的访问控制。
  • Python 3.11 或更高版本、Git 和可写的本地目录。
  • 用于以下登录命令的 Azure CLI。
  • 网络访问以下载Python包、公共数据集和模型的 tokenizer。
  • 模型加载、训练、采样和评估的已批准预算。

克隆示例存储库

克隆 microsoft-foundry/fine-tuning 并打开其交互式培训指南:

git clone https://github.com/microsoft-foundry/fine-tuning.git
cd fine-tuning/interactive_training

请在执行其余命令时保持此目录打开。 其中包含指南的 pyproject.toml 和 Python 包。

安装指南

创建虚拟环境并安装 cookbook。 Linux 和 Windows 命令将 CPU Torch 包索引用于驱动程序端依赖项。

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e . \
    --index-url https://pypi.org/simple \
    --extra-index-url https://download.pytorch.org/whl/cpu

参考:Cookbook 安装。

检查安装而不创建远程会话:

python -m pip check
python -m interactive_training.recipes.math_rl.train_azure --help

请放心,不会出现依赖关系冲突,且方案帮助中列出的内容为 project_endpoint、max_steps 和 max_train_examples。

配置项目并登录

使用已获项目批准的身份登录,然后选择其订阅:

az login
az account set --subscription "<subscription-id>"

参考:使用Azure CLI登录。

从 Foundry 项目复制 项目端点。 使用项目 URL,而不是模型部署 URL 或仅使用帐户主机名。 将 <project> 和 <account> 替换为你的项目值:

export AZURE_AI_PROJECT_ENDPOINT=\
"https://<account>.services.ai.azure.com/api/projects/<project>"

除非设置了 AZURE_AI_API_KEY,否则方案将使用 DefaultAzureCredential。 可以在 CLI 凭据之前选择其他配置的凭据。 如果设置了该关键变量,它将优先于你的 Azure CLI 登录。

运行方案

使用两个训练迭代、16 个训练示例和 8 个保留的评估示例运行 GSM8K 配方。 该流程创建会话、对响应进行采样、计算奖励、更新适配器和保存检查点。

Warning

此命令将创建远程训练会话,并会产生费用。 max_steps=2 限制训练迭代次数,而不是模型加载时间、评估调用、总令牌数或成本。 仅在预算获批后继续。

python -m interactive_training.recipes.math_rl.train_azure \
    project_endpoint="$AZURE_AI_PROJECT_ENDPOINT" \
    model_name="Qwen/Qwen3.8-27B" renderer_name=qwen3_8_low_reasoning \
    env=gsm8k learning_rate=2e-5 temperature=1.0 max_tokens=1200 \
    lora_rank=32 group_size=4 groups_per_batch=8 \
    loss_fn=importance_sampling seed=42 \
    max_steps=2 max_train_examples=16 max_test_examples=8 \
    eval_every=1 save_every=1 \
    log_path=./runs/first-math-check behavior_if_log_dir_exists=raise

参考: 数学 RL 食谱快速入门。

方案使用 key=value 参数,而不是 --key value。 使终端和网络连接保持打开状态,直到运行完成。

每次迭代使用 8 个提示,每个提示有 4 个响应。 max_tokens=1200 提供推理和最终答案的完成预算;响应仍可截断。

结果将位于 runs 下的 first-math-check 目录中。 该命令不允许覆盖现有目录。 为另一个独立运行选择一个新 log_path 项;不要删除结果以解决错误。

查看哪些操作成功了

请查看相对于指南目录的 ./runs/first-math-check/:

阶段 Evidence 这证明了什么
启动器设置 run_meta.json 是写入的;会话 ID 最初可能是 null。 本地设置开始,并非 Azure 接受了该会话。
模型已加载 控制台 Session ready: session_id=...; azure.session_id 已更新。 会话创建完成。
循环运行 config.json、metrics.jsonl、训练指标和轨迹 HTML。 采样、评分和更新操作正在进行。
保存状态 checkpoints.jsonl 已保存 state_path/sampler_path 条目。 保存操作已完成;不要依赖在保存完成前打印的检查点名称。
正常完成 训练批次完成后,final 分类帐中的数据行、最终的保留指标以及流程成功退出。 有界工作流完成;检查警告并单独验证清理。

对于此全新同步 GSM8K 运行,初始评估发生在第一次更新之前;最终评估在最后一次保存后进行。 检查 test/env/all/correct 和 test/env/all/total_episodes;查看任何已丢弃的评估警告。 即使基础结构运行正常,零分也可能意味着格式设置或词元预算方面确实出现了问题。 缺少的指标不是零分。

对于这一两步验证过程,既没有要求的精度提升,也没有承诺的运行时间。 若要声明改进,请使用固定保留集和 评估指南。

查看本地构件:

python dashboard_server.py --root ./runs
# Open http://127.0.0.1:8000/

参考:运行仪表板。

将仪表板保留在其默认环回地址上,因为它没有身份验证,并且可以显示提示和响应。 在仪表板终端中按下 Ctrl+C 即可停止;此操作不会关闭你的远程训练会话。

清理资源

当循环结束时,该方案会尝试结束其训练会话。 检查清理警告;仅打印 Session closed 消息并不能确认远程计算资源已释放。

请使用记录的会话 ID 以及示例会话管理指南来检查你的会话。 如果它保持活动状态,请保留所需的检查点并仅卸载你自己的会话。

保留用于恢复的配置、指标和检查点引用。 删除本地文件不会释放远程计算资源。 此方案不会创建服务部署。

尝试其他食谱

完成本快速入门后,请尝试 微调示例仓库中的其他示例。 交互式训练指南包括监督微调、首选项优化、蒸馏和其他 RL 任务的示例。

按照每个配方的设置和数据集说明进行操作。 在启动另一个运行之前,请确认模型访问和已批准的预算。