sagemaker-training-toolkit
sagemaker-training-toolkit 是一款专为 Amazon SageMaker 设计的开源库,旨在帮助开发者轻松构建自定义的机器学习训练环境。它的核心功能是让任何标准的 Docker 容器都能无缝兼容 SageMaker 的训练服务,从而简化模型从开发到部署的流程。
在机器学习工程中,确保训练环境的一致性往往是个挑战。sagemaker-training-toolkit 有效解决了这一问题:它允许用户将自己的训练脚本和依赖项打包进 Docker 容器,并在其中自动处理入口点执行、超参数解析及环境变量配置等繁琐细节。这意味着用户无需重复编写底层适配代码,即可在隔离且稳定的环境中运行训练任务。
这款工具非常适合需要灵活定制训练环境的机器学习工程师、数据科学家以及算法研究人员。如果你不满足于预置框架,希望使用特定的系统库或非标准依赖进行模型训练,sagemaker-training-toolkit 将是理想选择。其技术亮点在于极简的集成方式——只需在 Dockerfile 中安装该库,并将脚本置于指定目录,即可通过简单的环境变量(如 SAGEMAKER_PROGRAM)定义训练入口,迅速将本地代码转化为可在云端大规模运行的训练作业。
使用场景
某金融科技团队需要将自定义的异常检测算法迁移至 Amazon SageMaker 平台,以利用其弹性算力进行大规模历史数据训练。
没有 sagemaker-training-toolkit 时
- 开发人员必须手动编写复杂的 Shell 入口脚本,用于解析 SageMaker 传递的超参数、输入数据路径及输出配置,极易因格式错误导致任务启动失败。
- 容器内部缺乏标准化的环境变量映射机制,每次调整代码逻辑或依赖库时,都需要反复修改 Dockerfile 中的硬编码路径,维护成本极高。
- 本地调试环境与云端生产环境不一致,开发者难以在本地 Docker 中模拟真实的 SageMaker 训练行为,导致“本地运行正常,上云即报错”的频繁返工。
- 缺乏统一的训练入口定义标准,团队成员各自为政,使得代码复用性差,新成员上手定制容器门槛高。
使用 sagemaker-training-toolkit 后
- 只需在 Dockerfile 中安装该工具包并设置
SAGEMAKER_PROGRAM环境变量,即可自动识别并执行指定的 Python 训练脚本,无需手写任何引导代码。 - 工具自动处理超参数解析、通道(Channel)数据挂载及模型保存路径映射,开发者只需关注核心算法逻辑,彻底解耦了业务代码与基础设施细节。
- 支持在本地 Docker 容器中完美复现 SageMaker 的训练运行时行为,实现了“一次编写,随处运行”,大幅缩短了从开发到部署的验证周期。
- 提供了标准化的容器构建规范,团队可快速基于此模板复制出多个不同算法的训练镜像,显著提升了协作效率和工程规范性。
sagemaker-training-toolkit 通过将繁琐的基础设施适配工作自动化,让数据科学家能专注于模型创新而非容器运维。
运行环境要求
- Linux
未说明
未说明

快速开始

SageMaker 训练工具包
使用 Amazon SageMaker 在 Docker 容器中训练机器学习模型。
:books: 背景
Amazon SageMaker 是一项完全托管的数据科学和机器学习 (ML) 工作流服务。 您可以使用 Amazon SageMaker 来简化构建、训练和部署 ML 模型的过程。
要训练模型,您可以将训练脚本和依赖项包含在一个运行您的训练代码的 Docker 容器 中。 容器提供了一个有效的隔离环境,确保一致的运行时和可靠的训练过程。
SageMaker 训练工具包 可以轻松添加到任何 Docker 容器中,使其与 SageMaker 兼容,用于 训练模型。 如果您使用 SageMaker 预建训练用 Docker 镜像,则此库可能已包含在内。
有关更多信息,请参阅 Amazon SageMaker 开发人员指南中关于 使用 Docker 容器进行训练 的部分。
:hammer_and_wrench: 安装
要在您的 Docker 镜像中安装此库,请将以下行添加到您的 Dockerfile:
RUN pip3 install sagemaker-training
:computer: 使用
以下是简要的操作指南。 有关使用 SageMaker 训练工具包构建的自定义训练容器的完整可运行示例,请参阅 示例笔记本。
创建 Docker 镜像并训练模型
编写训练脚本(例如
train.py)。使用 Dockerfile 定义一个包含训练脚本及所有依赖项的容器。
训练脚本必须位于
/opt/ml/code目录中。 环境变量SAGEMAKER_PROGRAM定义了/opt/ml/code目录中哪个文件作为训练入口点。 当训练开始时,解释器会执行由SAGEMAKER_PROGRAM定义的入口点。 Python 和 Shell 脚本均受支持。FROM yourbaseimage:tag # 安装 SageMaker 训练工具包 RUN pip3 install sagemaker-training # 将训练脚本复制到容器内 COPY train.py /opt/ml/code/train.py # 将 train.py 定义为脚本入口点 ENV SAGEMAKER_PROGRAM train.py构建并标记 Docker 镜像。
docker build -t custom-training-container .使用该 Docker 镜像通过 SageMaker Python SDK 启动训练任务。
from sagemaker.estimator import Estimator estimator = Estimator(image_name="custom-training-container", role="SageMakerRole", train_instance_count=1, train_instance_type="local") estimator.fit()要在 SageMaker 上使用该镜像训练模型,需先将镜像 推送到 ECR,然后使用镜像 URI 启动 SageMaker 训练作业。
使用超参数向入口点传递参数
训练任务提供的任何超参数都会作为脚本参数传递给入口点。
SageMaker Python SDK 利用此功能将特殊超参数传递给训练任务,包括 sagemaker_program 和 sagemaker_submit_directory。
完整的 SageMaker 超参数列表可在 此处 查看。
在入口点脚本中实现参数解析器。例如,在 Python 脚本中:
import argparse if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--learning-rate", type=int, default=1) parser.add_argument("--batch-size", type=int, default=64) parser.add_argument("--communicator", type=str) parser.add_argument("--frequency", type=int, default=20) args = parser.parse_args() ...带超参数启动训练任务。
{"HyperParameters": {"batch-size": 256, "learning-rate": 0.0001, "communicator": "pure_nccl"}}
使用环境变量读取附加信息
入口点通常需要一些无法从 hyperparameters 中获取的额外信息。
SageMaker 训练工具包会将这些信息写入环境变量,供脚本内部使用。
例如,此训练任务包含 training 和 testing 两个数据通道:
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point="train.py", ...)
estimator.fit({"training": "s3://bucket/path/to/training/data",
"testing": "s3://bucket/path/to/testing/data"})
环境变量 SM_CHANNEL_TRAINING 和 SM_CHANNEL_TESTING 提供了这些通道的路径:
import argparse
import os
if __name__ == "__main__":
parser = argparse.ArgumentParser()
...
# 从环境变量中读取输入通道 training 和 testing
parser.add_argument("--training", type=str, default=os.environ["SM_CHANNEL_TRAINING"])
parser.add_argument("--testing", type=str, default=os.environ["SM_CHANNEL_TESTING"])
args = parser.parse_args()
...
训练开始时,SageMaker 训练工具包会打印所有可用的环境变量。有关提供的完整环境变量列表,请参阅 环境变量参考文档。
获取容器环境信息
要获取容器环境信息,可以初始化一个 Environment 对象。Environment 提供了对训练作业相关环境方面的访问权限,包括超参数、系统特性、文件系统路径、环境变量和配置设置等。它是在训练期间对容器环境的只读快照,并不包含任何状态信息。
from sagemaker_training import environment
env = environment.Environment()
# 从 `inputdataconfig.json` 文件中获取通道 "training" 的路径
training_dir = env.channel_input_dirs["training"]
# 从 `hyperparameters.json` 文件中获取超参数 "training_data_file"
file_name = env.hyperparameters["training_data_file"]
# 获取模型应保存的文件夹
model_dir = env.model_dir
# 训练模型
data = np.load(os.path.join(training_dir, file_name))
x_train, y_train = data["features"], keras.utils.to_categorical(data["labels"])
model = ResNet50(weights="imagenet")
...
model.fit(x_train, y_train)
# 在训练结束时将模型保存到 model_dir
model.save(os.path.join(model_dir, "saved_model"))
执行入口点
要执行入口点,调用 entry_point.run() 即可。
from sagemaker_training import entry_point, environment
env = environment.Environment()
# 将超参数作为脚本参数读取
args = env.to_cmd_args()
# 获取环境变量
env_vars = env.to_env_vars()
# 执行入口点
entry_point.run(uri=env.module_dir,
user_entry_point=env.user_entry_point,
args=args,
env_vars=env_vars)
如果入口点执行失败,trainer.train() 会将错误信息写入 /opt/ml/output/failure。否则,它会将成功信息写入 /opt/ml/success 文件。
:scroll: 许可证
本库采用 Apache 2.0 许可证 授权。更多详情请参阅 LICENSE 文件。
:handshake: 贡献
欢迎贡献!如果您想提交问题或拉取请求,请阅读我们的 贡献指南。
版本历史
v5.1.12025/09/22v5.1.02025/08/08v5.0.02025/06/04v4.9.02025/02/11v4.8.42025/02/03v4.8.32024/12/09v4.8.22024/12/06v4.8.12024/09/09v4.8.02024/08/14v4.7.42023/10/31v4.7.32023/10/23v4.7.22023/10/19v4.7.12023/10/17v4.7.02023/08/08v4.6.12023/06/19v4.6.02023/06/15v4.5.02023/04/26v4.4.102023/04/10v4.4.92023/04/05v4.4.82023/03/09常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器