Cog CLI 完整实操指南:5 分钟把机器学习模型容器化部署上线
【免费下载链接】cogContainers for machine learning项目地址: https://gitcode.com/GitHub_Trending/co/cog
Cog CLI是容器化机器学习模型部署的命令行工具:你只需用 Python 写模型代码,它负责装依赖、建环境、打包镜像、起服务。跟着走一遍,5 分钟就能完成从 init 到 push 的全流程,不用自己手写 Docker 镜像。
新项目怎么起步:一条命令 init
它解决的问题:手写第一份cog.yaml容易把字段写错。
cog init会在当前目录生成三个文件:cog.yaml(环境配置:Python 版本、依赖文件、是否需要 GPU)、run.py(模型入口,一个带setup()和run()的Runner类骨架)、requirements.txt。模板直接嵌在二进制里,断网也能用。
⚠️ 这里有个坑:它不会覆盖已存在的文件,目录里已有run.py时会提示Skipped existing直接跳过——想重来就先换个干净目录。
本地第一次预测怎么跑:cog run
它解决的问题:不想在宿主机装 torch 和一堆依赖。模型代码全部跑在容器里,你机器上只要有 Docker 就行。CLI 一条链路搞定:解析输入 → 自动构建镜像 → 起容器 → 发一次 HTTP 预测请求 → 停容器。
cog run -i image=@kodim24.png -i blur=8@前缀表示"值是个本地文件",CLI 会读文件再传给容器;不加@会被当成普通字符串。输出按模型声明的类型呈现:字符串直接打印,文件输出自动写到本地磁盘,数字和对象输出格式化 JSON。上面这条跑的就是仓库里 examples/blur/ 的图像模糊模型,处理完长这样:
💡 也可以直接对已构建好的镜像跑预测:把镜像引用作为第一个参数传进去,跳过本地构建,拉下来就能用:
⚠️ 90% 的人第一次会在这里卡住:输入校验发生在构建之前,-i blur="abc"这种类型错误会当场报错、容器根本没启动。先别慌,这是故意的——省掉你等几分钟构建的冤枉时间。
调试容器环境:cog exec 和 cog serve
cog exec:先查环境再查代码
它解决的问题:模型起不来,第一步是确认容器里依赖装没装齐、CUDA 能不能用。
cog exec python -c "import torch; print(torch.cuda.is_available())"当前目录会以卷的形式挂到容器内的/src,工作目录也设在那里,感觉就像在项目目录里直接敲命令。要跑 Web 服务就加-p 8888把端口发布出来。
cog serve:用和生产一样的 HTTP 接口调模型
它解决的问题:上线前想验证真实调用链路。
cog serve默认在宿主机 8393 端口监听,起来之后POST /predictions就能发预测,/openapi.json看接口规范,/health-check看健康状态。本地开发时源码是卷挂载进容器的,改代码重启即生效,不用重新构建。想深挖实现可以看 pkg/cli/serve.go。
构建产物:cog build 怎么打镜像
它解决的问题:只想要镜像、不想要预测结果,比如推到registry或交给 CI。
cog build -t my-model构建时会顺带基于 Python 类型注解静态分析出生成的OpenAPI Schema,写进镜像 label——部署方不用起容器就能预校验输入类型。镜像命名优先级:-t标签 >cog.yaml里的image字段 > 按项目目录生成的默认名。
上线部署:cog push 构建并推送
它解决的问题:把模型从本地一次性推上 registry,拿到线上模型地址。
cog push r8.im/your-username/my-model两个细节值得知道:一是构建开始前会先校验目标引用,COG_MODEL环境变量和cog.yaml的model字段冲突会当场报出,而不是让你白等几分钟构建;二是推送成功后会打印 digest 固定的引用,直接复制就能用。
⚠️ 第一次 push 大概率失败:你没登录。先执行cog login输入 token;CI 场景用cog login --token-stdin从标准输入传,免得卡在交互提示上。
新手最容易卡住的 3 个点速查
| 坑 | 现象 | 解法 |
|---|---|---|
| 端口混淆 | curl 5000 没反应 | 5000 是容器内端口,宿主机默认监听 8393 |
| GPU 没生效 | 日志出现 Missing device driver | nvidia 驱动没装;CLI 会自动去掉 GPU 重试 |
| 文件传成字符串 | 模型里收到的是路径文本 | 路径前加@:-i image=@photo.jpg |
收尾一句话:cog init起步,cog run/cog serve/cog exec开发调试,cog build出产物,cog push上线,整条链路 5 条命令,模型代码自始至终不在宿主机上执行。环境、依赖、CUDA 版本全部锁在容器镜像里——这就是"本地跑通即线上运行"。
【免费下载链接】cogContainers for machine learning项目地址: https://gitcode.com/GitHub_Trending/co/cog
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考