魔搭社群

發表於2024-02-11

魔搭社群

安裝

  • 官網安裝文件
  • 儘量使用官方已經打包好的映象,本地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)

相關文章