你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 任务的示例。
按照每个配方的设置和数据集说明进行操作。 在启动另一个运行之前,请确认模型访问和已批准的预算。