容器鏡像構建和調試指南

      網友投稿 714 2022-05-29

      構建鏡像:

      1.寫一個Dockerfile,參考:

      FROM swr.cn-north-4.myhuaweicloud.com/modelarts-job-dev-image/custom-cpu-base:1.0 # setup the env that you need when running a container ENV PYTHON_PATH=/mypath/:$PYTHON_PATH # copy local files (code, packages, or data) into container images COPY install/ /home/work/install/ # run shell comment to install packages or setting up configs RUN cd /home/work/install && pip install -r requirements.txt --no-cache-dir && \ cd /home/work/install/obs_sdk/src && python setup.py install

      2.把要打到基礎鏡像的依賴包跟Dockerfile放在同一目錄,cd到這個目錄,執行打鏡像命令:

      docker build -t my_deeplearning_image:v1 .

      啟動容器:

      ('-d'參數標示后臺啟動,不用再新起窗口執行)

      docker run -ti -d my_deeplearning_image:v1

      如果在調試中需要用到GPU設備,建議使用nvidia-docker來啟動。nvidia-docker的安裝和使用教程參考鏈接:https://blog.csdn.net/zywvvd/article/details/110647382

      進入容器:(一般會另起一個窗口,在debug時使用)

      1.獲取容器ID:

      通過命令查看CONTAINER ID ,命令如:

      docker ps

      結果如:

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 39c9ceedb1f6 my_deeplearning_image:v1 "bash" About a minute ago Up About a minute happy_meitner

      2.進入容器內部

      使用以下命令可進入容器內部(使用container ID)

      docker exec -it 39c9ceedb1f6 /bin/bash

      進入容器后,就類似通過ssh登陸了一個linux機器,可以查看所需的文件是否在正確位置,是否有正確權限。

      本地調試要點:

      0.確認對應的腳本、代碼、流程在linux服務器上運行正常。

      如果在linux服務器上運行就有問題,那么先調通以后再做容器鏡像。

      1.確認打入鏡像的文件是否在正確的位置,是否有正確的權限。

      訓練場景主要看一下自研的依賴包是否正常,看一下pip list是否包含所需的包,看一下容器直接調用的python是否是自己所需要的那個(如果容器鏡像裝了多個python,需要設置python路徑的環境變量)。

      推理場景主要看一下模型包位置是否正確,看一下python相關是否正確。

      2.測試訓練啟動腳本

      2.1優先使用手工進行數據拷貝的工作并驗證

      一般在鏡像里不包含訓練所用的數據和代碼,所以在啟動鏡像以后需要手工把需要的文件拷貝進去。建議數據、代碼和中間數據都放到"/cache"目錄,防止正式運行時磁盤占滿。建議linux服務器申請的時候,有足夠大的內存(8G以上)以及足夠大的硬盤(100G以上)。

      docker和linux的文件交互命令如下:

      docker cp data/ 39c9ceedb1f6:/cache/

      數據準備完成后,啟動訓練的腳本,查看訓練是否能夠正常拉起。一般來說,啟動腳本為:

      cd /cache/code/ python start_train.py

      如果訓練流程不符合預期,可以在容器實例中查看日志、錯誤等,并進行代碼、環境變量的修正。

      2.2然后預制腳本測試整體流程

      一般使用run.sh封裝訓練外的文件拷貝工作(數據、代碼:OBS-->容器,輸出結果:容器-->OBS),run.sh的構建方法參考之前的博客:https://bbs.huaweicloud.com/blogs/281792

      如果預制腳本調用結果不符合預期,可以在容器實例中進行修改和迭代。

      3.分析錯誤時:訓練鏡像先看日志,推理鏡像先看API的返回。

      可以用過命令查看容器輸出到stdout的所有日志:

      docker logs -f 39c9ceedb1f6

      一般在做推理鏡像時,部分日志是直接存儲在容器內部的,所以需要進入容器看日志。注意:重點對應日志中是否有ERROR(包括,容器啟動時、API執行時)。

      4.牽扯部分文件用戶組不一致的情況,可以在宿主機用root權限執行命令進行修改

      docker exec -u root:root 39c9ceedb1f6 bash -c "chown -R ma-user:ma-user /cache"

      5.針對調試中遇到的錯誤,需要持久化到容器構建流程,并重新測試。

      上傳鏡像:

      完成調試后,需要上傳基礎鏡像到SWR

      1.登陸SWR,login的賬號密碼可在SWR頁面的客戶端上傳指導時生成。

      其他賬號創建方法:獲取長期login指令

      2.創建自己的組織(僅需要創建一次)

      3.上傳鏡像(認為${image_name}:${image_version}是剛做好的基礎鏡像)

      先打tag,然后push。注意,第一次使用需要在SWR先創建一個組織,詳細參考SWR文檔:https://support.huaweicloud.com/usermanual-swr/swr_01_0014.html

      docker tag ${image_name}:${image_version} swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} docker push swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version}

      4.在SWR頁面確認基礎鏡像已正常上傳

      遠程調試要點:

      1.直接使用對應鏡像創建訓練任務即可

      2.觀察訓練任務是否正常執行

      主要觀察日志是否正常,然后看一下整個任務是否能夠正常產出結果。

      3.針對觀察發現的問題,增加相關信息打印

      可以通過在鏡像里修改run.sh(重新構建鏡像),或者在運行命令里用sed修改run.sh,或者通過增加“env”命令來查看容器環境信息。

      如果輸入輸出的邏輯不是很確認,可以先把樣例的數據和代碼放到鏡像里,先看一看整個訓練流程是否可以正常運行。

      刪除本地鏡像:

      參考:https://blog.csdn.net/winy_lm/article/details/77980529

      1.查看是否有對應容器

      docker ps -a

      2.停止對應容器

      docker stop ${container_id}

      3.刪除對應容器

      docker rm ${container_id}

      4.刪除對應鏡像

      docker rmi ${image_id}

      鏡像到導出和導入:

      容器鏡像的構建和調試指南

      如果需要進行鏡像的離線遷移,需要用到鏡像的導出和導入的功能。

      用save保存鏡像,用load導入:

      docker save ${image_name}:${image_version} > my_deeplearning_image.1.0.tar docker load -i my_deeplearning_image.1.0.tar

      用export保存container

      docker export ${container_id} > my_deeplearning_image.export.tar

      AI開發平臺ModelArts 容器 容器鏡像服務 SWR

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:匯編語言--輸入兩位十六進制數,輸出其十進制值
      下一篇:10個python爬蟲入門實例(小結)
      相關文章
      亚洲AV之男人的天堂| 亚洲AV色吊丝无码| 亚洲成年网站在线观看| 在线电影你懂的亚洲| 亚洲桃色AV无码| 亚洲色大成网站WWW久久九九| 91麻豆精品国产自产在线观看亚洲| 亚洲а∨天堂久久精品| 亚洲äv永久无码精品天堂久久 | 亚洲国产午夜福利在线播放| 日韩色日韩视频亚洲网站| 亚洲av日韩av永久无码电影| 亚洲国产AV一区二区三区四区| 亚洲中文无码卡通动漫野外 | 国产亚洲自拍一区| 久久亚洲精品无码观看不卡| 国产亚洲美女精品久久久| 国产自偷亚洲精品页65页| 亚洲一区二区三区偷拍女厕| 亚洲免费人成在线视频观看| 亚洲AV无码成人网站久久精品大| 国产成人A人亚洲精品无码| 亚洲AV永久无码精品一百度影院| 午夜影视日本亚洲欧洲精品一区| 亚洲午夜未满十八勿入| 亚洲色偷偷av男人的天堂 | 亚洲国产主播精品极品网红| 2048亚洲精品国产| 亚洲精品无码久久久影院相关影片| 国产V亚洲V天堂无码久久久| 亚洲一区二区三区首页| 亚洲成人福利网站| 亚洲精品123区在线观看| 亚洲AV无码专区国产乱码不卡| 精品国产日韩亚洲一区91| 亚洲日本一区二区三区在线不卡| 国产亚洲美女精品久久久2020| 亚洲国产精品va在线播放| 亚洲美女一区二区三区| 中中文字幕亚洲无线码| 国产精品亚洲精品日韩电影|