魔搭社群
安裝
- 官網安裝文件
- 儘量使用官方已經打包好的映象,本地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安裝
安裝CUDA
- CUDA版本選擇:顯示卡驅動和CUDA版本關係
- CUDA安裝地址:https://developer.nvidia.com/cuda-downloads
安裝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
使用
- 可以在模型庫找自己想要的模型:魔搭社群-模型庫
- 下面以15點人體關鍵點檢測模型作為示例
啟用環境
- 示例使用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)