尽管快速生成的AI进步正在彻底改变组织自然语言处理任务,但开发人员和数据科学家面临着定制这些大型模型的重大挑战。These hurdles include managing complex workflows, efficiently preparing large datasets for fine-tuning, implementing sophisticated fine-tuning techniques while optimizing computational resources, consistently tracking model performance, and achieving reliable, scalable deployment.The fragmented nature of these tasks often leads to reduced productivity, increased development time, and potential inconsistencies in the model development pipeline.组织需要一种统一的简化方法,从而简化了从数据准备到模型部署的整个过程。
为了应对这些挑战,AWS已扩大亚马逊射手制造商具有一组全面的数据,分析和生成的AI功能。这种扩展的核心是亚马逊萨吉人统一工作室,是一种作为单个综合开发环境(IDE)的集中服务。SageMaker Unified Studio简化了专用AWS分析和人工智能和机器学习(AI/ML)服务的熟悉工具和功能,包括亚马逊EMR,,,,AWS胶水,,,,亚马逊雅典娜,,,,亚马逊红移,,,,亚马逊基岩, 和亚马逊sagemaker AI。使用SageMaker Unified Studio,您可以通过亚马逊萨吉式制造商目录,从亚马逊射手制造商湖豪斯,从中选择基础模型(FMS)Amazon Sagemaker Jumpstart或通过jupyterlab构建它们,使用sagemaker AI培训基础架构进行训练并对其进行微调,并直接在同一环境中部署和测试模型。SageMaker AI是一项全面管理的服务,可通过将一组广泛的工具汇总为启用高性能,低成本ML,以构建,训练和部署ML模型,包括不同用例。它可以作为独立服务AWS管理控制台,或通过API。Sagemaker AI的模型开发功能可在Sagemaker Unified Studio中获得。
在这篇文章中,我们指导您通过SageMaker Unified Studio和Sagemaker AI定制大型语言模型(LLM)的阶段Sagemaker AI分发培训,使用MLFLOW,然后使用Sagemaker AI推断实时推理。我们还讨论了选择合适的实例大小并在使用萨格马克统一工作室的jupyterlab笔记本时分享一些最佳实践的最佳实践。
解决方案概述
下图说明了解决方案体系结构。有三个角色:管理员,数据工程师和用户,可以是数据科学家或ML工程师。
AWS SageMaker Unified Studio ML工作流程显示数据处理,模型培训和部署阶段
设置解决方案包括以下步骤:
- 管理员为用户设置了SageMaker Unified Studio域,并为访问控件设置。管理员还将数据发布给Sagemaker Lakehouse的Sagemaker目录。
- 数据工程师可以使用Unified Studio中的管道创建和管理提取,转换和加载(ETL)管道视觉ETL。他们可以将原始数据源转换为准备探索性数据分析的数据集。然后,管理员可以将这些资产的出版物管理给SageMaker目录,从而使其可被组织中的其他团队成员或用户(例如组织中的数据工程师)访问。
- 用户或数据工程师可以使用Admin提供的登录到统一的基于Web的IDE登录创建一个项目并创建用于跟踪实验的托管MLFlow服务器。用户可以在SageMaker目录中发现可用的数据资产,并要求订阅数据工程师发布的资产。数据工程师批准订阅请求后,用户对查询编辑器或使用A的内容进行了探索性数据分析Jupyterlab笔记本然后,通过通过AWS胶或雅典娜连接与SageMaker目录进行连接来准备数据集。
- 您可以探索SageMaker Jumpstart的模型,该模型托管了200多个模型,用于各种任务,并直接与UI进行微调,或开发一个培训脚本,以微调LLMJupyterlab Ide。Sagemaker AI提供分布式培训图书馆并支持各种分布式培训选项,以完成深度学习任务。在这篇文章中,我们使用Pytorch框架,并使用拥抱的Face开源FM进行微调。我们将向您展示如何将参数有效的微调(PEFT)与低级别适应(LORA)一起使用,在此冻结模型权重,用修改的重量指标训练模型,然后在分布式训练后将这些Lora适配器合并回基本模型。
- 您可以使用MLFlow在SageMaker Unified Studio中直接跟踪和监视微调指标,并分析诸如损失之类的指标,以确保模型正确调整。
- 您可以在完成微调作业完成后将模型部署到SageMaker AI端点,并直接从Sagemaker Unified Studio进行测试。
先决条件
在启动本教程之前,请确保您有以下内容:
- 一个具有创建萨格人资源的权限的AWS帐户。有关设置说明,请参阅设置AWS帐户并创建管理员用户。
- 熟悉Python和Pytorch,用于分布式培训和模型定制。
设置SageMaker Unified Studio并配置用户访问
Sagemaker Unified Studio建立在Amazon Datazone诸如域之类的功能来组织您的资产和用户,以及与其他用户合作,安全共享工件并在计算服务中无缝工作的项目。
要设置统一工作室,请完成以下步骤:
- 作为管理员创建一个萨格人统一的工作室域,并记下URL。
- 在域的详细信息页面上用户管理选项卡,选择配置SSO用户访问。对于这篇文章,我们建议使用单个登录(SSO)访问使用URL进行设置。
有关设置用户访问的更多信息,请参阅在Amazon Sagemaker Unified Studio中管理用户。
登录到SageMaker Unified Studio
现在,您已经创建了新的SageMaker Unified Studio域,完成了以下步骤,以访问SageMaker Unified Studio:
- 在SageMaker控制台上,打开域的详细信息页面。
- 选择SageMaker Unified Studio URL的链接。
- 使用您的SSO凭据登录。
现在,您签署了Sagemaker Unified Studio。
创建一个项目
下一步是创建一个项目。完成以下步骤:
- 在Sagemaker Unified Studio中,选择选择一个项目在顶部菜单上,然后选择创建项目。
- 为了项目名称,输入名称(例如,
演示
)。 - 为了项目资料,选择您的个人资料功能。项目配置文件是蓝图的集合,它们是用于创建项目的配置。对于这篇文章,我们选择所有功能,然后选择继续。
在Amazon Sagemaker Unified Studio中创建一个项目
创建一个计算空间
Sagemaker Unified Studio提供计算空间对于可以用来代码和开发资源的IDE。默认情况下,它为您创建了一个开始您的项目的空间。您可以通过选择找到默认空间计算在导航窗格中,选择空间选项卡。然后您可以选择打开访问JuypterLab环境并将成员添加到此空间。您还可以通过选择创建一个新的空间创建空间在空间选项卡。
要经济高效地使用SageMaker Studio笔记本,请使用较小的通用实例(例如T或M系列)进行交互式数据探索和原型制作。对于训练或大规模处理或部署等繁重的举重,请使用Sagemaker AI培训工作和萨吉马制造商AI预测来卸载工作,以分离P5家族等更强大的实例。我们将在笔记本中向您展示如何在使用API的笔记本中运行培训工作和部署LLM。不建议在笔记本实例中运行分布式工作负载。内核故障的机会很高,因为Jupyterlab笔记本本不应用于大型分布式工作负载(用于数据和ML培训)。
以下屏幕截图显示了您空间的配置选项。您可以从默认情况下更改实例大小(ml.t3.medium) 到 (ml.m5.xlarge)用于Jupyterlab IDE。您也可以增加亚马逊弹性块商店(Amazon EBS)培训LLM的量从16 GB到50 GB的容量。
亚马逊萨吉式统一工作室的CANFIGURE空间
设置MLFlow以跟踪ML实验
您可以在SageMaker Unified Studio中使用MLFLOW来创建,管理,分析和比较ML实验。完成以下步骤设置MLFLOW:
- 在Sagemaker Unified Studio中,选择计算在导航窗格中。
- 在MLFlow跟踪服务器选项卡,选择创建MLFlow跟踪服务器。
- 提供一个名称并创建您的跟踪服务器。
- 选择复制Arn复制跟踪服务器的Amazon资源名称(ARN)。
您将需要笔记本中的MLFlow ARN来设置分布式培训实验跟踪。
设置数据目录
对于模型进行微调,您需要访问数据集。设置环境后,下一步是从Sagemaker Unified Studio数据目录中找到相关数据,并准备模型调整数据。对于这篇文章,我们使用斯坦福问题回答数据集(小队)数据集。该数据集是一个阅读理解数据集,由人群工人对Wikipedia文章提出的问题组成,每个问题的答案是文本的一部分,或跨度,从相应的阅读段落或问题可能无法回答。
下载小队数据集并将其上传到Sagemaker Lakehouse,然后遵循这些步骤上传数据。
将数据添加到Amazon Sagemaker Unified Studio中的目录中
为了使用户或ML工程师可以发现此数据,管理员需要将此数据发布到数据目录。对于这篇文章,您可以直接下载小队数据集并将其上传到目录。要了解如何将数据集发布到SageMaker目录,请参见向项目清单中的Amazon Sagemaker Unified Studio目录发布资产。
使用查询编辑器和jupyterlab查询数据
在许多组织中,数据准备是一项协作的工作。数据工程师可能会准备一个初始的RAW数据集,然后在将其用于模型培训之前,数据科学家然后通过功能工程来完善和增强。在SageMaker Lakehouse数据和模型目录中,出版商将自动或手动批准的订阅设置为(等待管理员批准)。因为您已经在上一节中设置了数据,所以可以跳过本节,其中显示如何订阅数据集。
要订阅另一个数据集,例如小队,请在亚马逊萨格人湖豪斯打开数据和模型目录,请选择队,并订阅。订阅管理员发布的任何资产或数据集
接下来,让我们使用数据资源管理器探索您订阅的数据集。
完成以下步骤:
- 在项目页面上,选择数据。
- 在下面湖豪斯, 扩张
AWSDATACATALOG
。 - 从开始扩展您的数据库
glue_db_
。 - 选择您创建的数据集(以
队
)并选择与雅典娜的查询。
在Amazon Sagemaker未使用工作室中使用查询编辑器查询数据
通过多计算Jupyterlab IDE笔记本处理数据
Sagemaker Unified Studio在不同语言中提供了统一的Jupyterlab体验,包括SQL,Pyspark,Python和Scala Spark。它还支持跨不同计算运行时的统一访问Amazon EMR无服务器,EC2上的Amazon EMR,并为Spark胶水胶水。
完成以下步骤,以开始统一的Jupyterlab体验:
- 打开您的SageMaker Unified Studio项目页面。
- 在顶部菜单上,选择建造,下IDE和应用, 选择jupyterlab。
- 等待空间准备就绪。
- 选择加号和笔记本,选择Python 3。
- 打开一个新终端并输入
git克隆
https://github.com/aws-samples/amazon-sagemaker-generativeai。
转到文件夹 - Amazon-Sagemaker-generativeai/3_distributed_training/distribute_training_sm_unified_studio/
并打开
Unified Studio.ipynb的分布式培训笔记本开始。
输入您在以下代码中创建的MLFlow服务器ARN: - 导入OS
os.environ [“ mlflow_uri”] =┓”os.environ [“ mlflow_experiment_name”] =â=âevepseek-r1-distill-lllama-8b-sft”
现在,您可以通过笔记本可视化数据。
- 在项目页面上,选择数据。
- 在下面湖豪斯, 扩张
AWSDATACATALOG
。 - 从开始扩展您的数据库
glue_db
,复制数据库的名称,然后在以下代码中输入:
db_nameâ=â<输入您的DB名称>”表=“ sqad”
- 现在,您可以通过使用Sagemaker Unified Studio中的Jupyterlab笔记本电脑的内线SQL查询功能直接访问整个数据集。您可以在数据中遵循数据预处理步骤笔记本。%% sql project.Athena从“ <Database_name>”中选择 *。“ SQAD”;
以下屏幕截图显示了输出。
我们将将数据集分为测试集和用于模型培训的训练集。
当完成数据处理并将数据分为测试和训练集时,下一步是使用SageMaker分布式培训对模型进行微调。
通过sagemaker分发培训微调模型
现在,您准备通过使用SageMaker AI功能进行培训来微调模型。亚马逊萨吉式制造商培训是SageMaker提供的全面管理的ML服务,可帮助您有效地训练广泛的ML模型。SageMaker AI工作的核心是ML工作负载的容器化和管理AWS计算资源的能力。Sagemaker培训负责与设置和管理ML培训工作量的基础设施相关的繁重
我们直接从拥抱式枢纽中选择一个模型,DeepSeek-r1-Distill-lalama-8b并在Jupyterlab空间中开发我们的培训脚本。因为我们想通过使用Pytorch完全碎片数据并联(FSDP),我们使用拥抱的脸加速库在分布式配置上运行相同的Pytorch代码。您可以直接在Jupyterlab笔记本中启动微调工作或使用Sagemaker Python SDK开始培训工作。我们使用培训师从转接器到微调我们的模型。我们准备了脚本train.py,从磁盘加载数据集,准备模型和令牌器,并开始培训。
对于配置,我们使用trlparser
,并在YAML文件中提供超参数。您可以上传此文件并将其提供给类似于数据集的SageMaker。以下是用于对ML.G5.12XLARGE上进行微调模型的配置文件。将配置文件另存为args.yaml
并将其上传到亚马逊简单存储服务(亚马逊S3)。
catâ./args.yamlâ<< eofmodel_id:“ deepseek-ai/deepseek-r1-distill-llama-8b” - #拥抱面部模型IDmlflow_uri:“ $ {mlflow_uri}”mlflow_experiment_name:“ $ {mlflow_experiment_name}”#SageMaker特定参数output_dir:“/opt/ml/model” - '' - 到达萨格马人将上传模型的路径train_dataset_path:“/opt/opt/ml/input/data/train/'#fsx保存火车数据集的路径test_dataset_path:“/opt/ml/input/data/test/”#fsx保存测试数据集的路径#培训参数lora_r:8lora_alpha:16lora_dropout:0.1 Learning_rate:2e-4ââ–ââ#学习率调度程序num_train_epochs:1 - 'per_device_train_batch_size:训练期间每个设备的#批次尺寸2PER_DEVICE_EVAL_BATCH_SIZE:1â€#批次大小进行评估gradient_accumulation_steps:2向后/更新通行证之前的2个步骤数gradient_checkpointing:trueâ#使用渐变检查点bf16:trueâ€tf32:falseââ€ââ##使用tf32精度FSDP:“ full_shard auto_wrap卸载”fsdp_config:向后_Prefetch:“ Backward_pre”CPU_RAM_FEFTICED_LOADING:TRUEoffload_params:trueforward_prefetch:falseâuse_orig_params:truemerge_weights:true'''基本模型中的#合并权重eof
使用以下代码使用本机Pytorch容器映像,该图像预先构建了萨吉式制造商:
image_uri = sagemaker.image_uris.retrieve(框架=“ pytorch”,–区域= sagemaker_session.boto_session.gregion_name,–版本=“ 2.6.0”,â实例_type = instance_type,图像_SCOPE =“训练”)Image_uri
定义培训师如下:
定义ModelTrainermodel_trainer = modelTrainer(training_image = image_uri,âsource_code = source_code,âbase_job_name = job_name,–compute = compute_configs,分布式= torchrun(),wsping_condition =停止条件(max_runtime_in_seconds = 7200),Hyperparameters = {ââ€â€':“/opt/ml/input/data/config/args.yaml”#已上传到S3的TRL配置路径},output_data_config = outputDataConfig(S3_output_path = output_path),)
以以下方式运行教练:
#以我们上传的数据集作为输入开始火车工作model_trainer.train(input_data_config = data,wait = true)
您可以按照笔记本中的步骤操作。
您可以在Sagemaker Unified Studio中探索执行工作。通过在选定实例类型ML.G5.12XLARGE上分配计算,在萨吉式制造商培训集群上进行培训工作。我们选择将Lora适配器与基本模型合并。该决定是在培训过程中通过设置MERGE_WEATERS
参数为真的
在我们的train_fn()
功能。合并权重提供了一个单一的凝聚力模型,该模型既结合了我们通过微调进行的基本知识和域特异性适应性。
使用MLFLOW的轨道训练指标和模型注册
您在较早的步骤中创建了MLFlow服务器,以跟踪实验和注册模型,并在笔记本中提供了ARN。
您可以记录MLFlow模型并自动注册它们Amazon Sagemaker模型注册表使用Python SDK或直接通过MLFlow UI。使用mlflow.register_model()
在模型培训期间,自动在SageMaker模型注册表中自动注册模型。您可以在train.py和笔记本。培训代码跟踪MLFlow实验并将模型注册到MLFLOW模型注册表。要了解更多,请参阅自动注册SageMaker AI模型。
要查看日志,请完成以下步骤:
- 选择建造,然后选择空间。
- 选择计算在导航窗格中。
- 在MLFlow跟踪服务器选项卡,选择打开打开跟踪服务器。
您可以看到两个实验和注册模型。
使用SageMaker AI推断部署和测试模型
在AWS上部署微调模型时,SageMaker AI推论提供了多种部署策略。在这篇文章中,我们使用SageMaker实时推理。这实时推理端点旨在完全控制推理资源。您可以使用一组可用实例和部署选项来托管模型。通过使用SageMaker内置容器DJL服务,您可以利用直接在容器中可用的推理脚本和优化选项。在这篇文章中,我们将微调模型部署到了萨吉式端点以进行运行推断,该端将用于测试模型。
在Sagemaker Unified Studio,在Jupyterlab中,我们创建了模型
对象,这是用于使用多个容器选项的高级sagemaker模型类。这Image_uri
参数指定模型的容器图像URI,并且model_data
指向包含模型工件的Amazon S3位置(由SageMaker培训工作自动上传)。我们还指定了一组环境变量来配置特定推理后端选项(option_rolling_batch
),基于可用GPU的数量的张量并行性程度(option_tensor_parallel_degree
),以及在推荐期间模型的输入序列的最大允许长度(在代币中)option_max_model_len
)。
模型=模型(âimage_uri = image_uri,– model_data = f“ s3:// {bucket_name}/{job_prefix}/{job_name}/output/model.tar.gz”,角色= get_execution_role(), - env = {''hf_model_id':“/opt/opt/ml/model”,â€'option_trust_remote_code':'true',â€'option_rolling_batch':“ vllm”,â€'option_dtype':'bf16',, - -''opect_model_loading_timeout':'3600',â'option_max_model_len':'4096'})
创建模型对象后,您可以使用部署方法。
这nitial_instance_count
和instance_type
参数指定用于端点的实例数和类型。我们为端点选择了ML.G5.4XLARGE实例。这container_startup_health_check_timeout
和model_data_download_timeout
参数分别设置了容器启动健康检查和模型数据下载的超时值。
model_idâ=“ deepseek-ai/deepseek-r1-distill-lalama-8b”endpoint_nameâ=âf“ {model_id.split('/')[ - 1] .replace('。'。','' - ' - ')} - sft-djl“预测器= model.Deploy(dimital_instance_count = instance_count,â实例_type = instance_type,container_startup_health_check_timeout = 1800,– Model_data_download_timeout = 3600)
在模型可用于推理和评估之前,需要几分钟才能部署该模型。您可以通过将AWS SDK与boto3
客户sagemaker-runtime
,或使用SageMaker Python SDK和预测指标
以前创建的,使用预测
API。
base_prompt = f“”“” <s> [inst] {{Quartion}}} [/inst]”“”提示= base_prompt.format(format(问题=“巴黎圣母院大楼前面有什么雕像?”)预测“输入”:提示,“参数”:{ââ– max_new_tokens”:300,“温度”:0.2,ââ€'top_p“:0.9,ââ€'return_full_text”:false,“停止”:['</s>']}}))
您还可以在SageMaker Unified Studio中测试模型调用推理端点页面和文本推理选项卡。
故障排除
在进行模型培训和部署时,您可能会遇到以下一些错误:
- 培训工作未能开始<如果培训工作未能开始,请确保您的IAM角色AmazonSageMakerDomainExecution具有必要的权限,请验证实例类型在您的AWS区域中可用,并检查您的S3存储桶权限。当管理员创建域时,可以创建此角色,您可以要求管理员检查与此角色相关的IAM访问权限。
- 在训练期间遇到内存错误•如果您在训练过程中会遇到默认错误,请尝试降低批处理大小,使用梯度积累来模拟较大的批次,或考虑使用较大的实例。
- 缓慢的模型部署对于缓慢的模型部署,请确保模型伪像过大,并使用适当的实例类型进行推理和容量可用于您所在地区的实例。
有关更多故障排除提示,请参阅故障排除指南。
清理
默认情况下,SageMaker Unified Studio关闭了1小时后的空闲资源,例如Jupyterlab空间。但是,您必须删除S3存储桶和托管模型端点,以停止产生成本。您可以使用SageMaker控制台删除创建的实时端点。有关说明,请参阅删除端点和资源。
结论
这篇文章展示了SageMaker Unified Studio如何为数据和AI工作流提供强大的集中式服务,并在整个微调过程中展示其无缝集成功能。借助SageMaker Unified Studio,数据工程师和ML从业人员可以通过SageMaker目录有效地发现和访问数据,准备数据集,微调模型并将其部署在一个单个统一的环境中。该服务与SageMaker AI的直接集成和各种AWS分析服务简化了开发过程,从而减轻了在多个工具和环境之间切换的需求。该解决方案突出了服务在处理复杂的ML工作流程中的多功能性,从数据发现和准备工作到模型部署,同时保持凝聚力和直观的用户体验。通过集成的MLFlow跟踪,内置模型监视和灵活的部署选项,SageMaker Unified Studio诸如诸如集成MLFLOW跟踪之类的功能,展示了其在大规模上支持复杂的AI/ML项目的能力。
要了解有关SageMaker Unified Studio的更多信息,请参阅与Amazon Sagemaker Unified Studio一起为您的所有数据和AI的集成体验。
如果这篇文章可以帮助您或激发您解决问题,我们很想听听!该解决方案的代码可在Github仓库您可以使用和扩展。总是欢迎捐款!
关于作者
蒙娜·蒙娜(Mona Mona)目前,亚马逊的SR World Wend Gen Gen Gen Gen Gen Copecial Solutions Architect oppoy of Ai gen AI解决方案。在加入亚马逊之前,她曾是Google Google公共部门的主要AI专家。她是通过AWS AI服务和Google Cloud认证的专业机器学习学习指南的两本书的发表作者。她撰写了19个有关AI/ML和Cloud Technology的博客,并在有关Cord19神经搜索的研究论文中撰写了一名合着者,该论文在著名的AAAI(人工智能促进协会)会议上赢得了最佳研究论文奖。
Bruno Pistone是位于米兰的AWS的高级AI和ML专业解决方案建筑师。他与大型客户合作,以帮助他们深入了解他们的技术需求,并设计AI和机器学习解决方案,从而充分利用AWS Cloud和Amazon Machine Learning Stack。他的专业知识包括:机器学习端到端,机器学习工业化和生成性AI。他喜欢与朋友共度时光,探索新的地方,以及前往新目的地的旅行。
Lauren Mullennex是AWS的高级Genai/ML专业解决方案建筑师。她在DevOps,基础设施和ML方面拥有十年的经验。她的重点领域包括MLOPS/LLMOP,生成AI和计算机视觉。