魔搭社区
安装
- 官网安装文档
- 尽量使用官方已经打包好的镜像,本地python安装的方式很难成功,各种报错解决到哭
运行CPU镜像
export IMAGE=registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py310-torch2.1.0-tf2.14.0-1.10.0
docker run -itd --name model-scope $IMAGE sh
GPU镜像
- 使用GPU会比CPU快很多,我自己粗略估算了下速度可以相差到30-50倍
- 但是GPU版本需要安装CUDA/cuDNN/nvidia-container-runtime,可能有些麻烦
CUDA安装
- 安装CUDA
- 安装cuDNN
- 安装nvidia-container-runtime
# 验证GPU在容器内生效
docker run -it --rm --gpus all ubuntu nvidia-smi
运行GPU镜像
- 上述的CUDA/cuDNN/nvidia-container-runtime需要先安装好
export IMAGE=registry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda11.8.0-py310-torch2.1.0-tf2.14.0-1.10.0
docker run -itd --name model-scope --gpus all $IMAGE sh
- 上面的命令很可能出现下方的问题
- 原因:CUDA等库和容器内的文件冲突
- 解决方法
- 不挂载GPU启动容器(去掉"--gpus all")
- 根据提示删除冲突文件
- 将该容器保存成新镜像
- 使用新镜像带上GPU启动容器,如果还是报错冲突继续上面的步骤
# 如果如下报错
# docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
# nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/aed7d08d93dfa9237877dc46cd7fd8b9cf0f0f16df7fcbab92cb01d07d6aebfa/merged/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1: file exists: unknown.
# 不挂在GPU启动容器
docker run -itd --name demo-v0 $IMAGE sh
# 进入不带GPU的容器内,删除冲突文件(报错的文件路径)
docker exec -it demo-v0 sh
rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
rm -rf /usr/lib/x86_64-linux-gnu/libcuda.so.1
rm -rf /usr/lib/x86_64-linux-gnu/libcudadebugger.so.1
# 保存成新镜像
docker commit <container id> demo:v1
# 使用新镜像启动容器
docker run -itd --name demo-v1 --gpus all demo:v1 sh
使用
启用环境
- 示例使用CPU镜像
- 镜像中包含了所有依赖,可以直接使用
export IMAGE=registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py310-torch2.1.0-tf2.14.0-1.10.0
docker run -itd --name model-scope $IMAGE sh
下载模型
- 点击页面的"模型文件",打开标签页
- 点击右上角"下载模型"
- 复制"SDK下载"中的代码
- 打开容器,创建一个pytho文件,复制代码并运行
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('iic/cv_hrnetv2w32_body-2d-keypoints_image')
运行代码
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
model_id = 'damo/cv_hrnetv2w32_body-2d-keypoints_image'
body_2d_keypoints = pipeline(Tasks.body_2d_keypoints, model=model_id)
# 该示例为线上图片,可以改为本地图片,填写路径即可
output = body_2d_keypoints('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/keypoints_detect/000000438862.jpg')
# the output contains poses, scores and boxes
print(output)