跳至主要內容

ModelScope-魔搭社区

言午日尧耳总大约 3 分钟AI视频CUDADocker

ModelScope-魔搭社区

安装

运行CPU镜像

  • 只是体验一下的画可以使用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安装

# 验证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)
上次编辑于:
贡献者: 许晓聪