ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ModelScope本地部署:从0到离线推理的实操路径

ModelScope本地部署:从0到离线推理的实操路径 ModelScope本地部署从0到离线推理的实操路径【免费下载链接】modelscopeModelScope: bring the notion of Model-as-a-Service to life.项目地址: https://gitcode.com/GitHub_Trending/mo/modelscopeModelScope本地部署解决的就是一件事数据不出机器模型跑在你自己的电脑上。一位算法工程师要处理1000万条用户评论做情感分析走云端API一次调用成本数千元合规部门还会追问评论数据去了哪里一位工厂质检工程师的产线内网与外网物理隔离检测服务的远程调用三次里有一次超时产线等待结果的成本远高于买一张显卡一个音频团队的合同写明录音不得上传第三方服务器却每周要转写2小时的会议。三个角色的问题可以用同一套方案回答而下面只讲值得做的部分。这三个场景的共同点数据必须留在本机模型必须落在本地磁盘。拆解ModelScope的四个能力域ModelScope把使用模型的整条链路切成四个能力域你在引入前可以先判断自己会碰到哪个而不是记住所有API能力域解决的问题典型场景推理流水线pipeline一行代码加载模型并拿到结果用最小成本验证某个任务是否可行模型资产与缓存管理hub模型文件的下载、缓存与复用先把模型搬到本地磁盘断网后照常推理数据集加载MsDataset把不同来源的数据统一成可用格式整理自己的训练数据训练与评估Trainer用自己的数据微调通用模型通用模型效果不达业务阈值时推理流水线把数百个模型的预处理、输入组织全部封装在任务名和模型ID背后你只负责拿到输出资产管理层处理模型文件的下载和磁盘缓存这类琐事也是离线环境的关键所在数据集层对应把数据喂进去Trainer层对应把通用模型改成自己的。四个域互相独立只做推理的团队永远不会碰到后两个。记住这张映射选型时你只需要问我的问题落在哪个能力域。跑通本地推理适用场景正式引入前用最小成本验证目标任务能在你的机器上跑。pip install modelscope pip install modelscope[nlp]执行这一步的前提是你已有Python 3.10环境并激活了独立虚拟环境目的是让框架本体和NLP领域依赖同时落盘涉及CV、音频或多模态模型时把方括号里的名字换成cv、audio或multi-modal即可。判断成功的标志pip check无依赖冲突。from modelscope.pipelines import pipeline seg pipeline(word-segmentation, modeldamo/nlp_structbert_word-segmentation_chinese-base) print(seg(今天天气不错适合出去游玩))执行这一步的前提是上面安装完成目的是验证下载模型→写入缓存→本地推理的完整链路。数据流向需要说清楚首次运行时模型文件会从模型社区仓库下载数百MB量级到本地缓存此后的推理过程完全在本机完成输入文本不发出任何网络请求。判断成功的标志首次运行出现下载进度输出为{output: 今天 天气 不错 适合 出去 游玩}。预下载模型资产并固定缓存路径适用场景目标环境之后要断网内网、隔离测试区或者你不想让缓存散落在用户目录里。modelscope download --model damo/nlp_structbert_word-segmentation_chinese-base执行这一步的前提是你已经确认了目标模型的ID目的是在有网机器上完成一次下载之后把缓存目录拷到目标机器离线推理即可长期可用。判断成功的标志输出指向~/.cache/modelscope下的模型文件重复执行同一命令直接命中缓存而不下载。若缓存要放在大容量磁盘可在下载和推理前统一设置环境变量export MODELSCOPE_CACHE/data/ms-cache执行这一步的前提是你有多块磁盘且默认缓存路径空间不足目的是让下载与推理共用同一块存储。判断成功的标志新下载的模型出现在指定目录下。把训练数据接入统一格式只有要微调时才会碰到数据集层只做推理可以跳过这一节。from modelscope.msdatasets import MsDataset data MsDataset.load(chinese-poetry-collection, splittrain)执行这一步的前提是数据来源在模型社区的数据集仓库如果是本地文件直接传本地路径即可不必经社区中转目的是验证数据加载链路可用。判断成功的标志data是标准Dataset对象可逐条读取样本首次运行时数据集文件同样只下载到本地缓存。微调本身的流程可以概括为三步加载训练集和评估集并做列名映射、用模型ID与训练轮数等参数构建kwargs、调用Trainer。核心执行只有两行from modelscope.trainers import build_trainer from modelscope.metainfo import Trainers trainer build_trainer(nameTrainers.gpt3_trainer, default_argskwargs) trainer.train()执行这一步的前提是通用模型在你数据上的效果确实不达业务阈值、且有可用的训练资源目的是产出一个在自己的数据上微调过、保存于工作目录的模型。判断成功的标志工作目录下生成checkpoint与训练日志。到这里模型已在本地磁盘推理不出网唯一需要联网的时机是新模型或新数据集的下载。排障与边界现象import modelscope正常调用pipeline时缺第三方库。原因只装了核心包对应领域的extra依赖没有装。解法pip install modelscope[nlp]换成你的领域名再pip check核对。现象第一次推理极慢之后正常。原因慢的部分是模型首次下载到本地缓存。解法在有网机器上modelscope download预下载缓存目录整体拷贝配合MODELSCOPE_CACHE指过去。现象Linux上跑音频模型报错缺libsndfile。原因系统级音频库未装Windows与Mac则自动可用。解法sudo apt install -y libsndfile1。⚠️ 部分音频任务的模型只支持Python 3.7加TensorFlow 1.15的Linux组合其他版本不受支持需要用这类模型时建议走官方Docker镜像而非自装环境。遇到上面三种情况对号入座即可解决其余报错先跑pip check八成是依赖版本问题。延伸方向当你对推理效果满意、想把它变成线上服务时可以研究modelscope/exporters/下的导出实现把模型转成ONNX格式再部署当单个通用模型覆盖不了业务时可以探索插件机制modelscope/cli/plugins.py把自己的自定义流水线注册进框架当你单卡显存装不下要训的模型时框架里现成的数据并行、模型并行策略值得看一眼。本地部署的闭环到这里就完整了剩下的只是看你想把它用多深。【免费下载链接】modelscopeModelScope: bring the notion of Model-as-a-Service to life.项目地址: https://gitcode.com/GitHub_Trending/mo/modelscope创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表