云服务器内容精选

  • 引言 训练精度问题是多种因素共同作用的结果,主要表现是训练过程的Loss不收敛、Loss收敛不符合预期或者Loss收敛趋势符合预期,但是模型评测结果表现不佳。影响模型Loss收敛的原因是多方面的:首先,数据问题可能导致不收敛,例如数据预处理不完善;其次,模型的训练超参数也同样会导致类似的情况;另外,网络随机参数初始化差异以及典型场景(例如Dropout和数据集Shuffle等操作)都可能在训练阶段Loss层面引入误差;再者,模型本身的算法设计过程也可能会引入不收敛情况;最后,则是不符合预期的计算或者通信导致的模型收敛问题。在迁移流程中,一般已经有模型训练的标杆,因此主要关注昇腾软件栈引入的精度偏差即可。由于昇腾芯片和GPU芯片的架构差异(包括不同架构下的GPU芯片),收到数值计算精度的影响,在软件实现上也存在微小的偏差。一般来说,只要数值差异在特定的容忍范围内,不会影响模型的最终收敛。 父主题: PyTorch迁移精度调优
  • Msprobe梯度监控 梯度监控工具提供了将模型梯度数据导出的能力。使用梯度监控工具,可以实现对训练过程模型每一层梯度信息进行监控,目前支持两种能力: 将模型权重的梯度数据导出。这种功能可以将模型权重的梯度值以统计量的形式采集出来,用以分析问题,例如检测确定性问题,使用训练状态监控工具监控NPU训练过程中的确定性计算问题。 将两份梯度数据进行相似度对比。在有标杆问题中,可以确认训练过程中精度问题出现的Step,以及抓取反向过程中的问题。 使用步骤如下: 通过pip安装msprobe工具。 # shell pip install mindstudio-probe 创建配置文件config.json。 { "task": "grad_probe", "dump_path": "./dump_path", "rank": [], "step": [], "grad_probe": { "grad_level": "L1", "param_list": [], "bounds": [-1, 0, 1] } } task参数需指定为grad_probe,dump_path表示输出目录,需手工指定,默认输出到dump_path目录。参数grad_level可取值L0、L1、L2,级别越大导出的数据越详细。更多详细参数说明请参考参数说明。 监控逻辑插入训练脚本。 from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger("config_json_path") # 模型初始化之后位置添加。 debugger.monitor(model) ... # 结束训练之后,调用stop接口。 debugger.stop() (可选)梯度数据相似度比对。 from msprobe import * GradComparator.compare_distributed("配置文件里写的dump_path", "配置文件里写的dump_path", "比对结果输出目录") 最终生成结果为similarities.csv表示每个Step各个权重参数两次比对相似度值,以及 {param_name}.png和summary_similarities.png以折线图方式表示各个Step相似度不比对结果。 详细工具的使用指导请参考梯度状态监控工具介绍。 父主题: Msprobe工具使用指导
  • Msprobe API预检 Msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,目前适配PyTorch和MindSpore框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。 精度预检工具旨在计算单个API在整网计算中和标杆场景下的差异,对于无明确精度差异来源情况或者对模型了解不多的情形下都推荐使用预检工具,检查第一个步骤或Loss明显出现问题的步骤。它可以抓取模型中API输入的数值范围,根据范围随机生成输入,用相同的输入分别在NPU(GPU)和CPU上执行算子,比较输出差异。预检最大的好处是,它能根据算子(API)的精度标准来比较输出结果并判定其是否有精度问题。预检工具使用包含以下三步:dump、run_ut以及api_precision_compare。基本步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和GPU的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 使用run_ut.py执行预检。 msprobe -f pytorch run_ut -api_info ./dump.json 这里-api_info指定的是步骤2导出的dump.json文件,表示整网计算过程中API的输入输出情况。执行完成run_ut命令之后将输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文。accuracy_checking_result_{timestamp}.csv属于API级,标明每个API是否通过测试。建议用户先查看accuracy_checking_result_{timestamp}.csv文件,对于其中没有通过测试的或者特定感兴趣的API,根据其API name字段在 accuracy_checking_details_{timestamp}.csv中查询其各个输出的达标情况以及比较指标。 比对NPU和GPU预检结果。 msprobe -f pytorch api_precision_compare -npu /home/xxx/npu/accuracy_checking_details_{timestamp}.csv -gpu /home/xxx/gpu/accuracy_checking_details_{timestamp}.csv -o /home/xxx 这里-npu指定步骤3NPU预检结果中accuracy_checking_details_{timestamp}.csv文件路径,-gpu指定GPU预检结果accuracy_checking_details_{timestamp}.csv文件路径, -o需指定执行比对结果的存盘路径。执行完成后输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文件。用户可以通过先查看api_precision_compare_result_{timestamp}.csv文件的Forward Test Success和Backward Test Success,判断是否存在未通过测试的API,再查看api_precision_compare_details_{timestamp}.csv文件的API详细达标情况。 详细工具的使用指导请参考离线预检和在线预检介绍。 父主题: Msprobe工具使用指导
  • 精度调优总体思路 精度问题定位首先要能在昇腾环境上稳定地复现问题,这样才可以在该异常场景下进行针对性分析。大模型训练通常使用多机训练,多机训练的问题复现成本通常较高,且难以直接Dump分析(例如直接使用精度工具采集整网Tensor信息可能会产生TB级的Dump数据,存储和复制都比较困难),所以建议用户在复现前先进行模型裁剪,例如第一优先级是缩小DP、将模型转为单机训练等,这样会大大降低后续定位的难度。 根据精度问题现象可以选择合适的定位方式,Msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,通过采集和对比标杆(GPU/CPU)环境和昇腾环境上运行训练时的差异点来判断问题所在。整体流程如下图所示,更多介绍请参考昇腾精度调试指南。 图1 精度调优流程 溢出检测和Dump比对是通过在PyTorch模型中注入Hook从而Dump模型训练过程的输入输出数据,比对NPU环境和标杆环境的所有输入输出的差异来发现异常信息。更多介绍请参考Msprobe工具溢出检测和精度比对介绍。 API精度预检是通过提取模型中所有的API前反向信息,通过工具构造相应的API单元测试,将NPU输出与标杆比对,从而检测出精度有差异的API。更多介绍请参考Msprobe工具离线预检和在线预检介绍。 父主题: PyTorch迁移精度调优
  • 精度校验 迁移之后的精度校验工作是以CPU/GPU环境训练过程作为标杆的,这里的前提是在迁移前,模型已经在CPU/GPU环境达到预期训练结果。在此基础上,迁移过程的精度问题一般包括: Loss曲线与CPU/GPU差异不符合预期。 验证准确度与CPU/GPU差异不符合预期。 在迁移到NPU环境下训练发现以上问题时,说明精度可能存在偏差,需要进一步做精度调优。下文将分别阐述精度诊断的整体思路和如何借助精度工具进行精度问题的定位。 父主题: PyTorch迁移精度调优
  • Msprobe精度比对 精度比对功能主要针对两类场景的问题: 同一模型,从CPU或GPU移植到NPU中存在精度下降问题,对比NPU芯片中的API计算数值与CPU或GPU芯片中的API计算数值,进行问题定位。 同一模型,进行迭代(模型、框架版本升级或设备硬件升级)时存在的精度下降问题,对比相同模型在迭代前后版本的API计算数值,进行问题定位。 首先通过在PyTorch训练脚本中插入dump接口,跟踪计算图中算子的前向传播与反向传播时的输入与输出,然后再使用子命令compare进行比对生成比对表格。当前比对结果支持计算Cosine(余弦相似度)、MaxAbsErr(最大绝对误差)和MaxRelativeErr(最大相对误差)、One Thousandth Err Ratio(双千分之一)和Five Thousandths Err Ratio(双千分之五)这几种评价指标,工具通过阈值过滤筛选出不达标API的输入输出提示用户进行重点关注。使用步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和标杆的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 创建比对compare.json文件。 单卡场景 { "npu_path": "./npu_dump/dump.json", "bench_path": "./bench_dump/dump.json", "stack_path": "./npu_dump/stack.json", "is_print_compare_log": true } 多卡场景 { "npu_path": "./npu_dump/step0", "bench_path": "./bench_dump/step0", "is_print_compare_log": true } 单卡场景npu_path、bench_path、stack_path分别表示从步骤2中NPU环境所生成的dump.json、标杆环境生成的dump.json及NPU环境生成的stack.json文件,is_print_compare_log配置是否开启日志打屏。 多卡场景区别于单卡场景会在步骤2按rank标号信息生成多个rank的dump文件结果,npu_path指定NPU环境生成包含多rank目录,gpu_path指定标杆环境包含多rank目录,is_print_compare_log配置是否开启日志打屏。 精度比对生成比对报告 msproe -f pytorch compare -i ./compare.json -o ./output -s 这里-i指定步骤3所创建compare.json文件,-o指定比对结果文件存盘目录,-s配置是否生成堆栈信息。生成结果为advisor_{timestamp}.txt和compare_result_{timestamp}.xlsx文件,advisor_{timestamp}.txt列出了可能存在精度问题的API的专家建议,compare_result_{timestamp}.xlsx文件列出了所有执行精度比对的API详细信息和比对结果。 详细工具的使用指导请参考Pytorch精度比对介绍。 父主题: Msprobe工具使用指导
  • 准备工作 在定位精度问题之前,首先需要排除训练脚本及参数配置等差异的干扰。目前大部分精度无法对齐的问题都是由于模型超参数、Python三方库版本、模型源码等与标杆环境(GPU/CPU)设置的不一致导致,为了在定位过程中少走弯路,需要在定位前先对训练环境及代码做有效排查。此外,问题定位主要基于GPU环境和NPU环境上运行的过程数据做对比,所以需要分别准备GPU和NPU训练环境,大部分场景需要规模相同的训练环境。如果已经将模型缩减到单机可运行,则只是单台GPU设备即可。 定位前的排查当前主要包含如下几个方面: 训练超参数。常见的超参如下图所示: 图1 训练超参数 模型的超参通常可能调整的主要有学习率、batch size、并行切分策略、学习率warm-up、模型参数、FA配置等。用户在进行NPU精度和GPU精度比对前,需要保证两边的配置一致。 表1 超参说明 超参 说明 学习率 影响模型收敛程度,决定了模型在每次更新权重时所采用的步长。学习率过高,模型可能会过度调整权重,导致不稳定的训练过程;如果学习率过低,模型训练速度会变慢,甚至陷入局部最优。 batch size 影响训练速度,有时候也会影响模型精度。 micro batch size 影响流水线并行中设备的计算效率。 切分策略 包括DP(Data Parallel)、TP(Tensor Parallel)、PP(Pipeline Parallel)。 DP:数据并行(Data Parallelism)是大规模深度学习训练中常用的并行模式,它会在每个进程(设备)或模型并行组中维护完整的模型和参数,但在每个进程上或模型并行组中处理不同的数据。因此,数据并行非常适合大数据量的训练任务。 TP:张量并行也叫层内并行,通过将网络中的权重切分到不同的设备,从而降低单个设备的显存消耗,使得超大规模模型训练成为可能。张量并行不会增加设备等待时间,除了通信代价外,没有额外代价。 PP:流水线并行将模型的不同层放置到不同的计算设备,降低单个计算设备的显存消耗,从而实现超大规模模型训练。流水线并行也叫层间并行,层输入输出的依赖性使得设备需要等待前一步的输出,通过batch进一步切分成微batch, 网络层在多个设备上的特殊安排和巧妙的前向后向计算调度,可以最大程度减小设备等待(计算空泡),从而提高训练效率。 学习率预热 不同的学习率调度器(决定什么阶段用多大的学习率)有不同的学习率调度相关超参,例如线性调度可以选择从一个初始学习率lr-warmup-init开始预热。您可以选择多少比例的训练迭代步使用预热阶段的学习率。不同的训练框架有不同的参数命名,需要结合代码实现设置对应的参数。 模型结构 配置模型结构的超参主要有num-layer、hidden-size、seq-length等。 FA配置 超参数为use-flash-attn,决定训练过程中的Attention模块是否使用融合flash attention算子(性能较优)或者使用小算子。 训练脚本 由算法迁移人员排查迁移后的NPU脚本是否存在问题,可以通过Beyond Compare工具比对GPU训练脚本和NPU训练脚本之间是否存在差异。例如是否GPU环境下开启了FA但是NPU上未开启FA。 三方库版本比对 大模型训练通常会使用Deepspeed、Megatron等三方库,需要确保这些三方库的版本一致。 环境版本更新 这一项仅在条件允许的情况下进行,根据精度问题定位经验,部分问题是由于使用了较早版本的昇腾软件版本或者非商用发布的昇腾软件版本,所以推荐在条件允许的前提下配套安装最新商发版本的昇腾开发套件CANN Toolkit、昇腾驱动以及torch_npu包。具体操作,请参考昇腾商用版资源下载指导。 数据集。 需要排查是否使用的训练数据集存在差异。 初始权重。 需要排查是否加载的初始权重有差异,建议加载相同的初始权重。 父主题: PyTorch迁移精度调优
  • 问题复现 一般场景的训练模型都是包括随机种子、数据集Shuffle、网络结构Dropout等操作的,目的是在网络阶段引入一定的随机性使得训练结果更加具有鲁棒性。然而在精度诊断或者对齐阶段,这些随机性会导致训练运行结果每次表现不一致,无法进行和标杆的比对。因此在训练模型复现问题时,需要固定存在随机性的步骤,保证实验可重复性。存在随机性的步骤包括模型参数初始化,数据Batch加载顺序,Dropout层等。部分算子的计算结果也存在不确定性,需要固定。 当前固定随机性操作可分为工具固定和人工固定两种。 工具固定Seed 对于网络中随机性的固定,Msprobe提供了固定Seed的方式,只需要在config.json文件中添加对应seed配置即可。 Msprobe工具提供了seed_all接口用于固定网络中的随机数。如果客户使用了工具但取用了其他随机种子,则必须使用客户的随机种子固定随机性。 函数原型 from msprobe.pytorch.common import seed_all seed_all(seed=1234, mode=False) 表1 参数说明 参数名 说明 是否必选 seed 随机数种子。参数示例:seed=1000。默认值:1234。 否 mode 确定性计算模式。可配置True或False。参数示例:mode=True。默认值:False。 即使在相同的硬件和输入下,API多次执行的结果也可能不同,开启确定性计算是为了保证在相同的硬件和输入下,API多次执行的结果相同。 确定性计算会导致API执行性能降低,通常不需要在精度问题刚开始定位时就开启,而是建议在发现模型多次执行结果不同的情况下时再开启。 rnn类算子、ReduceSum、ReduceMean等算子可能与确定性计算存在冲突,如果开启确定性计算后多次执行的结果不相同,则考虑存在这些算子。 否 函数示例 seed_all函数的随机数种子,取默认值即可,无须配置;第二个参数默认关闭,不开启确定性计算时也无须配置。 确定性计算是NPU的一套机制,用于保证算子的计算确定性。之所以要有这个机制,是为了在Debug过程中,让所有的算子计算结果前后完全一致可复现,这是大多数精度问题分析的重要前提。因此,在精度问题定位过程中,确定性计算不是目的,而是手段。很多场景下需要在确定性计算使能的情况下,进行下一步的精度问题分析定位。Cuda对部分算子实现了确定性计算,但仍有部分算子无法固定。通常需要依赖确定性计算的场景是长稳问题,因为长稳问题需要通过多次长跑来分析Loss情况,这时候如果NPU本身计算结果不确定,就难以支撑和GPU结果的多次对比。 示例1:仅固定随机数,不开启确定性计算。 seed_all() 示例2:固定随机数,开启确定性计算。 seed_all(mode=True) 在多卡训练场景下由于通信算子计算累加计算顺序不确定,需要添加以下环境变量,固定通信算子计算的确定性: export HCCL_DETERMINISTIC=TRUE 固定随机数范围 seed_all函数可固定随机数的范围如下表所示。 API 固定随机数 os.environ['PYTHONHASHSEED'] = str(seed) 禁止Python中的hash随机化。 random.seed(seed) 设置random随机生成器的种子。 np.random.seed(seed) 设置numpy中随机生成器的种子。 torch.manual_seed(seed) 设置当前CPU的随机种子。 torch.cuda.manual_seed(seed) 设置当前GPU的随机种子。 torch.cuda.manual_seed_all(seed) 设置所有GPU的随机种子。 torch_npu.npu.manual_seed(seed) 设置当前NPU的随机种子。 torch_npu.npu.manual_seed_all(seed) 设置所有NPU的随机种子。 torch.backends.cudnn.enable=False 关闭cuDNN。 torch.backends.cudnn.benchmark=False cuDNN确定性地选择算法。 torch.backends.cudnn.deterministic=True cuDNN仅使用确定性的卷积算法。 工具固定(Dropout) Dropout的实质是以一定概率使得输入网络的数据某些位置元素的数值变为0,这样可以使得模型训练更加有效。但在精度问题的定位过程之中,需要避免产生这种问题,因此需要关闭Dropout。 在导入PrecisionDebugger后,工具会自动将如下接口参数p(丢弃概率)置为0。 torch.nn.functional.dropout torch.nn.functional.dropout2d torch.nn.functional.dropout3d torch.nn.Dropout torch.nn.Dropout2d torch.nn.Dropout3d 人工固定(硬件随机差异) 工具内部对于随机的控制,是通过设定统一的随机种子进行随机性固定的。但是由于硬件的差异,会导致同样的随机种子在不同硬件上生成的随机数不同。具体示例如下: 由上图可见,torch.randn在GPU和NPU上固定随机种子后,仍然生成不同的随机张量。 对于上述场景,用户需要将网络中的randn在CPU上完成后再转到对应device。例如,StableDiffusion中需要在forward过程中逐步生成随机噪声。 这样在Host侧生成的随机张量能够保证一样,搬移到NPU或者GPU设备上仍然一样。 固定随机性完成后,可以使用缩小的模型在单机环境进行问题复现。复现后使用下一章节介绍的msprobe工具进行问题定位。需要注意的是,部分模型算法本身存在固有的随机性,在使用上述方法固定随机性后,如果使用工具也未能找到出问题的API,需要分析是否由算法本身的随机性导致。 父主题: PyTorch迁移精度调优
  • 性能可视化工具与性能分析工具 对于高阶的调优用户,可以使用可视化profiling数据查看数据详情并分析可优化点,昇腾提供了Ascend-Insight可视化工具,相比于Chrometrace等工具提供了更优的功能和性能。详细信息,请参见昇腾Ascend-Insight用户指南。 对于GPU和NPU性能比对、NPU多次训练之间性能比对的场景,昇腾提供了性能比对工具compare_tools,通过对训练耗时和内存占用的比对分析,定位到具体劣化的算子,帮助用户提升性能调优的效率。工具将训练耗时拆分为计算、通信、调度三大维度,并针对计算和通信分别进行算子级别的比对;将训练占用的总内存,拆分成算子级别的内存占用进行比对。 对于集群训练场景,昇腾提供了集群分析工具cluster_analysis,当前主要对基于通信域的迭代内耗时分析、通信时间分析以及通信矩阵分析为主,从而定位慢卡、慢节点以及慢链路问题。 父主题: PyTorch迁移性能调优
  • SD WebUI推理性能测试 以下性能测试数据仅供参考。 开启Flash Attention 生成1280x1280图片,使用Ascend: 1* ascend-snt9b(64GB),约耗时7.5秒。 图1 生成图片耗时(1) 生成1280x1280图片,使用Ascend: 1* ascend-snt9b(32GB),约耗时9.3秒。 图2 生成图片耗时(2) 不开启Flash Attention 生成1280x1280图片,使用Ascend: 1* ascend-snt9b(64GB),约耗时10.1秒。 图3 生成图片耗时(3) 生成1280x1280图片,使用Ascend: 1* ascend-snt9b(32GB),约耗时14.1秒。 图4 生成图片耗时(4) 父主题: SD WEBUI套件适配PyTorch NPU的推理指导(6.3.908)
  • 步骤六 访问在线服务 在Chrome浏览器中安装ModHeader插件。 图10 安装ModHeader插件 Chrome浏览器安装ModHeader插件后,可能会导致访问不了ModelArts平台,访问ModelArts时需要临时禁用ModHeader插件。或者使用Edge登录ModelArts,使用Chrome安装插件访问页面。 打开ModHeader,单击添加MOD。 图11 添加MOD 选择添加Request header。 图12 添加Request header 进入在线服务详情,查看Key值和Value值。 Key值固定为X-Apig-AppCode,Value值为APP认证的app_code值,在服务调用指南tab的APP认证API处展开,进行AppCode管理设置。 图13 获取Key值和Value值 将在ModHeader插件中添加Key值和Value值。 图14 添加Key和value 进入在线服务详情页,查看APP认证方式的服务API。 图15 API接口公网地址 复制API接口公网地址,并在地址后添加"/",进行页面访问,例如: https://infer-app-modelarts-cn-southwest-2.myhuaweicloud.com/v1/infers/abc104bb-d303-4ffb-a8fa-XXXXXXXXX/ 图16 访问在线服务 输入Prompt,修改所需要的请求参数(如Width、Height),进行Prompt请求。 图17 填写请求参数 表1 SDXL模型参数及其含义 参数名称 说明 是否必选 默认值 prompt 提示词,根据提示词生成含有对应内容的图像 是 无 negative_prompt 反向提示词,图像生成过程中应避免的提示 否 无 num_inference_steps 推理步骤数,控制推理的步数 否 40 height 生成图像的纵向分辨率 否 1024 width 生成图像的横向分辨率 否 1024 high_noise_frac 高噪声比例,即基础模型跑的步数占总步数的比例 否 0.8 refiner_switch 是否使用细化模型refiner 否 true(使用) seed 随机种子,控制生成图像的多样性 否 无 您可在ModelArts控制台查看相关日志。 图18 查看相关日志 首次请求时会进行模型加载,耗时较长,因此第一个请求可能超时,第二个请求将会正常,请耐心等待。
  • 步骤四 创建AI应用 在ModelArts的AI应用页面,进行AI应用创建。 图3 创建AI应用 填写如下参数信息。 名称:AI应用的名称,请按照实际应用名填写。 版本:版本描述,请按照实际填写。 元模型来源:注意此处选择“从容器镜像选择”。 容器镜像所在路径:单击文件夹标签,选择已经制作好的镜像。 容器调用接口参数:根据镜像实际提供的协议和端口填写,本案例中的SDXL镜像提供HTTP服务和8183端口。 图4 填写参数(1) 系统运行架构: 选择ARM. 推理加速卡:无。 部署类型: 在线服务。 请求模式:同步请求。 启动命令: source /etc/bashrc && python3 launch.py --skip-torch-cuda-test --port 8183 --enable-insecure-extension-access --listen --log-startup --disable-safe-unpickle --skip-prepare-environment --api 按照上述配置完参数后,单击右下角的立即创建, 完成AI应用的创建。 图5 填写参数(2) 当AI应用状态变为正常时,表示创建完成。 图6 AI应用创建完成
  • 步骤一 导出镜像 完成在DevServer上部署SD WebUI推理服务章节的任务后,在宿主机上执行以下命令,导出镜像。 mv /home/ma-user/sdwebui/stable-diffusion-webui/models/VAE-approx/model.pt /home/ma-user/sdwebui/stable-diffusion-webui/models/VAE-approx/vaeapprox-sdxl.pt docker commit ${container_name} sdxl-train:0.0.1
  • 步骤五 部署服务 单击AI应用名称,进入AI应用详情页,单击部署在线服务。 图7 部署在线服务 填写如下服务部署参数。 名称: 服务的名称,按照实际需要填写 是否自动停止:如果配置自动停止,服务会按照配置的时间自动停止。如果需要常驻的服务,建议关掉该按钮。 描述:按照需要填写。 资源池:选择专属资源池。若之前未购买专属资源池,具体步骤请参考创建资源池。 资源规格要求: 硬盘空间:至少200GB。 昇腾资源规格:可以申请Ascend: 1* ascend-snt9b(32GB)或Ascend: 1* ascend-snt9b(64GB)规格。请按需选择需要的规格,64GB规格的推理耗时更短。 推荐使用“西南-贵阳一”Region上的昇腾资源。 AI应用来源: 我的AI应用。 选择AI应用及其版本:此处选择上一步中创建的sdxl-webui-pytorch:0.0.1应用。 计算节点规格: 按需选择Ascend: 1* ascend-snt9b(32GB)或Ascend: 1* ascend-snt9b(64GB)。 图8 填写服务部署参数 选择开启APP认证并选择应用。 图9 开启APP认证 按照上述配置完参数后,单击“下一步”, 确认信息无误后,单击“提交”,完成服务的部署。
  • 步骤一 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward