在MaaS中创建模型
在模型广场选择模型后,需要使用模型创建一个自定义模型,才能进行模型训练、推理。
场景描述
基于ModelArts Studio大模型即服务平台在模型广场预置的模型模板,用户可以使用推荐的模型权重文件或自定义的模型权重文件,创建一个自己的模型。
创建成功的模型可以在ModelArts Studio大模型即服务平台进行调优、压缩、推理等操作。
约束限制
- 用于生成专属模型的模型权重文件需要满足Hugging Face上的对应模型的文件格式要求。
- 模型权重文件夹下包括权重类文件、词表类文件和配置类文件。
- 可以使用transformers的from_pretrained方法对模型权重文件夹进行加载。
具体请参见Hugging Face官方文档Documentations。
- 当选择ChatGLM3-6B、GLM-4-9B、Qwen-7B、Qwen-14B和Qwen-72B模型框架时(模型名字必须一致),需要修改权重配置才能正常运行模型,操作步骤请参见修改权重配置。
前提条件
已准备好用于生成专属模型的模型权重文件,并存放于OBS桶中,OBS桶必须和MaaS服务在同一个Region下。
修改权重配置
当选择ChatGLM3-6B、GLM-4-9B、Qwen-7B、Qwen-14B和Qwen-72B模型框架创建模型时(模型名字必须一致),如果使用自定义模型权重文件,则需要修改权重配置才能正常运行模型;如果使用推荐的模型权重文件,则不需要修改权重配置,可以跳过该步骤。修改后的权重文件要更新至OBS桶中。
- ChatGLM3-6B、GLM-4-9B
修改文件“tokenization_chatglm.py”。
- 第一处
# Load from model defaults assert self.padding_side == "left"
修改为
# Load from model defaults # assert self.padding_side == "left"
- 第二处
if needs_to_be_padded: difference = max_length - len(required_input) if "attention_mask" in encoded_inputs: encoded_inputs["attention_mask"] = [0] * difference + encoded_inputs["attention_mask"] if "position_ids" in encoded_inputs: encoded_inputs["position_ids"] = [0] * difference + encoded_inputs["position_ids"] encoded_inputs[self.model_input_names[0]] = [self.pad_token_id] * difference + required_input
修改为
if needs_to_be_padded: difference = max_length - len(required_input) if "attention_mask" in encoded_inputs: encoded_inputs["attention_mask"] = encoded_inputs["attention_mask"] + [0] * difference if "position_ids" in encoded_inputs: encoded_inputs["position_ids"] = encoded_inputs["position_ids"] + [0] * difference encoded_inputs[self.model_input_names[0]] = required_input + [self.pad_token_id] * difference
- 第一处
- Qwen-7B、Qwen-14B和Qwen-72B
原内容
SUPPORT_BF16 = SUPPORT_CUDA and torch.cuda.is_bf16_supported() SUPPORT_FP16 = SUPPORT_CUDA and torch.cuda.get_device_capability(0)[0] >= 7
修改为
SUPPORT_BF16 = SUPPORT_CUDA and True SUPPORT_FP16 = SUPPORT_CUDA and True
创建我的模型
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 进入创建模型页面。
- 方式一:在ModelArts Studio左侧导航栏中,选择“我的模型”进入模型列表,单击“创建模型”弹出创建模型页面。
- 方式二:在ModelArts Studio左侧导航栏中,选择“模型广场”,在模型广场选择模型并单击“立即使用”进入模型详情页,单击“创建模型”弹出创建模型页面。
- 在创建模型页面,配置参数。
表1 创建模型 参数
说明
来源模型
- 当从“我的模型”进入创建模型页面时,单击选择基础模型完成模型选择。
- 当从“模型广场”进入创建模型页面时,此处默认呈现选择的模型。
当选择模型后,支持单击“重新选择”更改模型。
模型名称
自定义模型名称。
支持1~64位,以中文、大小写字母开头,只包含中文、大小写字母、数字、下划线(_)、中划线(-)和(.)。
描述
模型简介。支持100字符。
权重设置与词表
默认选择“使用推荐权重”,支持选择“自定义权重”。
- “使用推荐权重”:使用平台推荐的权重文件,可提高模型的训练、压缩、部署和调优等服务的使用效率。
- “自定义权重”:使用用户自定义的权重文件,需要先将权重文件上传至OBS桶中。且权重文件必须满足约束限制。
权重文件指的是模型的参数集合。
说明:百川系列模型只支持自定义权重。
选择自定义权重路径
当“权重设置与词表”选择“自定义权重”时,需要选择存放模型权重文件的OBS路径,必须选择到模型文件夹。
权重校验
当“权重设置与词表”选择“自定义权重”时,需要选择是否开启权重文件校验。默认是开启的。
- 当开启权重校验时,平台会对OBS中的权重文件进行校验,确认其是否满足规范。权限校验常见的失败情况及其处理建议请参见权重校验。
- 当关闭权重校验时,则不进行校验,创建模型可能会因为权重文件不合规而失败。
- 参数配置完成后,单击“创建”,创建自定义模型。
在模型列表,当模型“状态”变成“创建成功”时,表示模型创建完成。
查看我的模型详情
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 在ModelArts Studio左侧导航栏中,选择“我的模型”进入模型列表。
- 单击模型名称,进入模型详情页面,可以查看模型“基本信息”和“作业记录”。
- 基本信息:可以查看模型名称、ID、来源模型等信息。
- 作业记录:可以查看该模型被用于哪些作业类型,以及当前作业的状态等信息。
删除我的模型
删除操作无法恢复,请谨慎操作。
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 在ModelArts Studio左侧导航栏中,选择“我的模型”进入模型列表。
- 在模型列表,单击模型名称,进入模型详情页面,查看模型的“作业记录”。
- 如果作业记录为空,则直接执行下一步。
- 如果作业记录存在作业,则先删除所有作业,再执行下一步。
当模型存在作业记录会删除失败。
- 在模型详情页,单击右上角的“删除”,在弹窗中输入“DELETE”,单击“确定”,删除模型。
权重校验
创建模型时,开启权重校验后,平台会自动创建一个权重校验的任务,在模型详情页的作业记录列表可以查看权重校验任务。
当状态显示运行失败时,鼠标悬停在状态即可查看失败信息,根据失败信息处理问题。常见的权限校验失败信息及其处理建议请参见表2。
失败信息 |
信息解释 |
处理建议 |
---|---|---|
Unknown error, please contact the operation and maintenance personnel or check the log to locate the specific problem. |
未知错误。 |
查看日志定位处理问题,或者联系技术支持。 |
Backend model template selection error (metadata error). |
后台模型模板选择错误。 |
查看日志定位处理问题,或者联系技术支持。 |
Failed to read standard config.json in the background. |
后台读取标准config.json失败。 |
查看日志定位处理问题,或者联系技术支持。 |
Failed to read generation_config.json. |
generation_config.json内容格式错误。 |
检查“generation_config.json”文件中的内容是否为json格式。 |
The value of do_sample is not set to true in generation_config.json, which is inconsistent with the configured sampling parameters such as temperature, top_p, top_k etc. |
在generation_config.json中没有将do_sample的值设置为true,与配置的temperature、top_p、top_k等采样参数矛盾。 |
将“generation_config.json”文件中的“do_sample”的值设置为“true”。 |
Failed to read user config.json. |
config.json不存在或内容不符合json格式。 |
检查“config.json”文件是否存在,或者是内容是否为json格式。 |
The quantization_config field is missing in config.json, please check whether it is awq quantization weight. |
config.json中缺少quantization_config字段,请检查是否为awq量化权重。 |
检查权重和模型模板是否匹配。 |
There is an extra quantization_config field in config.json. Please check whether it is a non-quantized weight. |
config.json中多出quantization_config字段,请检查是否为非量化权重。 |
检查权重和模型模板是否匹配。 |
Key fields describing the model structure are missing from config.json, or their values are inconsistent with standard open source. |
config.json中缺少描述模型结构的关键字段,或其值与标准开源不一致。 |
检查“config.json”文件中的配置是否与模型官方一致。 |
Error loading tokenizer in transformers. |
transformers加载tokenizer出错。 |
检查词表文件是否正确。 |
Error loading weights in transformers. |
transformers加载权重出错。 |
检查权重文件是否正确。 |