头图

魔搭社区

安装

  • 官网安装文档
  • 尽量使用官方已经打包好的镜像,本地python安装的方式很难成功,各种报错解决到哭

运行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')

运行代码

  • 回到"模型介绍"标签页,找到代码范例
  • 创建一个py文件,复制代码并运行
  • 运行即可得到结果
  • 结果可以结合BiliBili视频:AI编码助手+OpenCV=玩做出好玩的东西来
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)

言午日尧耳总
1 声望3 粉丝

不秃顶、不猝死,顺顺利利活到100可以吗?