...
Total XX (delta XX), reused XX (delta XX), pack-reused XX
remote: Resolving deltas: 100% (XX/XX), completed with X local object.
remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual "git lfs push --all".
To https://www.modelscope.cn/AIBS/XXX.git
! [remote rejected] XXX -> XXX (pre-receive hook declined)
error: failed to push some refs to 'https://www.modelscope.cn/AIBS/XXX.git'
...
Total XX (delta XX), reused XX (delta XX), pack-reused XX
remote: Resolving deltas: XX% (XX/XX), completed with X local object.
remote: GL_HOOK_ERR: Modification refused by ModelScope.
remote: error: hook declined to update XXX
To https://www.modelscope.cn/AIBS/XXX
! [remote rejected] XXX -> XXX (hook declined)
error: failed to push some refs to 'https://www.modelscope.cn/AIBS/XXX.git'
可尝试解决的方法:
重新执行git push命令
HTTP 500
报错内容:
...
Total XX (delta XX), reused XX (delta XX), pack-reused XX
error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date
Start on ModelScope
0. 环境准备
在任意路径下安装
git lfs;根据本工程目录下
./scripts/requirements.txt文件安装脚本运行所需依赖;如果选择使用uv管理模型工程内的python运行环境,需要在本地安装uv;否则可跳过此步。
创建ModelScope账号,登录后从账号设置>>访问控制页面获取访问令牌(Token)。
1. 初始化模型仓库
配置含模型基本信息的yaml文件,要求详见本工程目录下
./scripts/mdinfo.yaml文件,可参考./scripts/egs/目录下的示例配置文件1_mdinfo_eg*.yaml;运行本工程目录下
./scripts/1_init_model_dirfns.py脚本,会依次完成以下步骤以初始化本地模型目录:在ModelScope上创建模型;(可选)
也可参考创建自己的模型库自行创建,若已自行创建,则须在脚本运行命令中增加
--created配置。将创建的模型clone至本地;(可选)
也可自行将创建好的模型 使用Git下载 至本地(须在下载命令中 使用Token(即访问令牌),否则后续无法上传更新),若已下载,则须在脚本运行命令中增加
--cloned配置。更新master分支内容;
根据配置的Icraft版本(
icraft_ver)创建新分支 (例:版本配置为3.33.1,则将创建分支mdz_v3.33),并首次上传至远程仓库;在模型目录下根据配置创建相应的目录和文件:
use_uv),会初始化模型目录下MODEL_icraft的uv环境;icraft_ver)选取最适合的分支内容;MODEL_icraft/MODEL.yaml)。脚本运行命令:
2. 添加模型文件
上一步中脚本运行完毕后,目标模型工程目录下将根据配置生成与 3. 工程结构说明 中目录结构相同的所需初始文件,请根据实际情况,进一步修改和补充其中的内容。
1. 添加模型源码文件
将模型
MODEL源码文件复制到已创建好的MODEL_icraft文件夹内。删除源码中的
.git文件夹及.gitignore文件。2. 更新icraft相关文件
根据需求,相应增删改模型文件 (可分步执行
git add&git commit命令,以便后续追溯修改):目录结构说明请参见3. 工程结构说明;
工程模板请参考:
MODEL_icraft/2_compile/config&MODEL_icraft/3_deploy/cfg&MODEL_icraft/3_deploy/metrics/logs目录下已生成对应后端及量化精度的 编译toml文件、运行时cfg配置yaml文件 和 测试结果log文件夹,用于单例测试(正确性检查中使用),三者文件名对应方式参考如下,前两者文件中各参数配置请根据模型实际情况修改(如:toml文件中parse/quantize段参数、yaml文件中dataset/param段配置等),若需修改imodel文件路径,请在两者文件中同步修改:注:
demo为后续正确性检查判断依据,如果不是用于单例测试,请 务必不要 在文件名中写入demo;XXX_TARGET_QDTYPE_demo.yaml,其中TARGET与QDTYPE分别代表实际适配的硬件后端(BY/ZG)及量化精度(int8/int16/bf16/mix等),与2_compile/config目录下toml文件名 及3_deploy/metrics/logs目录下文件夹名 均 须保持一致。如需在模型编译中用到customop或额外dll等特别配置,可参考本工程
icraft_folders/special目录下内容;准备模型工程内的python运行环境配置文件:
MODEL_icraft目录下更新pyproject.toml和uv.lock文件 (自动生成) ;MODEL_icraft目录下添加包含所有所需环境依赖安装命令的文件。3. 添加模型说明
1.
MODEL.yaml文件在目标模型工程目录下
MODEL_icraft文件夹内已生成初始MODEL.yaml文件,文件中含${}处需要补充填写内容,${|XX,XX,…|}表示须从中选择一项填写,格式可参考本工程./scripts/egs/目录下的示例配置文件2_model_eg*.yaml;yaml中部分填写项说明如下:(若初始化模型仓库时各配置正确,无需自行新增字段)
2.
README.md文件运行本工程目录下
./scripts/2_yaml2md.py脚本,在目标模型工程目录下生成README.md初始文件;脚本运行命令:
请仔细阅读脚本生成的
README.md文件,并再 根据实际需要进行修改 ,包括但不限于其中含💡提示处。4. 上传
在当前 非
master分支 上将上文所述模型文件 全部添加完毕,即做好模型入库准备后,依次执行以下步骤以上传模型文件:确认已在模型信息汇总页面上登记当前模型信息,页面表格中
模型名/源码链接栏内容须与本MODEL名一致;运行本工程目录
./scripts/3_set_githooks.py脚本,为目标模型工程设置hooks路径;(此步骤仅需为目标模型工程执行一次)脚本运行命令:
如果无法通过此脚本为模型设置hooks路径,请参照MS_hooks中说明自行操作。
在目标模型工程目录下,上传模型文件:
执行git命令上传:
git push命令执行后,根据终端中显示内容确定上传检查结果:若终端中显示以下内容,则表示模型目录下文件结构与内容均已通过上传检查;
若终端中显示以下内容,则表示模型目录下存在内容不符合要求,已阻止上传,请完整查看终端中错误信息,根据提示对模型目录下文件进行修改:
注:
ModelScope上 只能 看到
master分支 及 tag版本 内容,即 无法 看到上传的mdz_vX.X分支 内容,如需在网页上确认分支文件,可先临时标记一个tag版本(tag与分支名不可重复)上传,确认后再删除。上传时可能遇到大文件推送失败问题:
报错内容:
解决方法:
按报错内容中提示将大文件一次性上传后,再正常推送分支内容。
ModelScope存在服务器网络不稳定的情况,有时可能上传失败,包括但不限于以下报错:
GL_HOOK_ERR报错内容:
可尝试解决的方法:
git push命令HTTP 500报错内容:
可尝试解决的方法:
git push命令push过程中卡死
显示内容:
可尝试解决的方法:(暂未探索到其它简便途径)
5. 检查反馈
设置hooks路径并上传成功后,会触发对目标模型工程的正确性检查,并在之后通过飞书通知检查结果,若检查未通过,则会一并发送出错内容,请根据信息进一步修改。