determined配置
1. docker配置(默認(rèn)使用ubuntu操作系統(tǒng))
- 安裝docker(國內(nèi)可能需要先換源)
sudo apt install docker.io
###
# 在docker容器中再安裝docker容易出問題,操作前參考下述說明明確需求再實(shí)施(一般只需讓容器能運(yùn)行docker指令,此時只需要執(zhí)行說明中的最后一節(jié)方案)
# https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
####
- 安裝nvidia-container-toolkit
用于Docker容器內(nèi)調(diào)用GPU(注意可能需要科學(xué)上網(wǎng))
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y --no-install-recommends nvidia-container-toolkit
# 可能需要手動安裝systemctl指令:
# sudo apt install systemd
sudo systemctl restart docker
-
特定用戶無法執(zhí)行docker指令時的處理方案
- 將用戶添加到特定組中:
sudo usermod -aG docker inf
- 確認(rèn)特定用戶是否已被添加到指定組中:
sudo cat /etc/group | grep docker
- 已將用戶添加到指定組中,但執(zhí)行id指令并未看到指定組時,可以嘗試重新登錄用戶
- 將用戶添加到特定組中:
- docker遠(yuǎn)程訪問安全配置
- docker常用指令
- Docker容器磁盤空間限制
- 啟動container時設(shè)置內(nèi)存空間和硬盤映射
- ssh遠(yuǎn)程訪問docker容器注意:root用戶遠(yuǎn)程登錄須額外運(yùn)行以下指令再重啟ssh服務(wù):
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
ssh-keygen -A
# 設(shè)置root密碼
passwd
# 重啟ssh服務(wù)
service ssh restart
- docker容器的進(jìn)入
1. 從image建立可使用gpu的container并進(jìn)入交互式界面:docker run -it -p [host_port]:[container_port](do not use 8888) --gpus all -v [host_path]:[container_path] --name [container_name] [image_name] /bin/bash
-v指定路徑映射,將本地路徑掛載到容器中
2. 開啟已有容器:docker start [container_id or container_name]
3. 進(jìn)入已經(jīng)啟動的 docker 容器的交互式終端,可以使用 docker exec 命令。這個命令可用于在運(yùn)行中的容器內(nèi)部執(zhí)行命令或腳本,并以交互模式與容器進(jìn)行交互,具體格式如下:docker exec -it [container_id or container_name] /bin/bash
-it 表示 docker 將以交互模式和偽終端(pseudo-TTY)模式運(yùn)行命令。
/bin/bash 則是要執(zhí)行的命令或腳本,這里表示將會啟動一個交互式Bash shell,
[container_id or container_name] 為要進(jìn)入的實(shí)際容器的 ID 或名稱,如果不確定確切的容器 ID 或名稱,可以使用docker ps
命令打印當(dāng)前已開啟的容器列表,包括它們的 ID、名稱、狀態(tài)等信息。如果要查看當(dāng)前所有的容器列表,可使用docker ps -a
- windows安裝docker:
- 官網(wǎng)下載安裝:https://www.docker.com/,安裝后首次運(yùn)行時會提示安裝虛擬機(jī)服務(wù),推薦選擇wsl
- wsl配置(docker首次啟動時會彈窗提示配置方式,可以選擇推薦的默認(rèn)配置(需要科學(xué)上網(wǎng)),也可以按下述步驟手動配置):
- docker須配置:
wsl --update
,默認(rèn)從microsoft store下載,可以嘗試增加--web-download
參數(shù)從github下載(需要科學(xué)上網(wǎng)),成功后先執(zhí)行wsl --set-default-version 2
將默認(rèn)版本切換為2,再運(yùn)行wsl --shutdown
關(guān)閉wsl,再啟動docker desktop(會自動啟動wsl,確保更新生效) - 自定義配置linux子系統(tǒng)
- docker須配置:
- docker存儲和加載image的默認(rèn)路徑配置:
- 自定義python開發(fā)環(huán)境配置流程:
docker run -it --gpus=all -p 8022:22 --name test -v D:\learn\doctor_thesis:/home/WangXiaoFeng/doctor_thesis/ determinedai/environments:cuda-11.3-pytorch-1.12-tf-2.11-gpu-0.27.1 /bin/bash
# 此時已進(jìn)入新建立的test容器,運(yùn)行以下指令設(shè)置允許以root身份進(jìn)行ssh登錄
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
ssh-keygen -A
passwd
# 設(shè)置自己的root密碼
# 重啟服務(wù)使修改生效
service ssh restart
# 將常用的國內(nèi)pip源和conda源改入新容器的家目錄下
# 安裝determined
pip install determined==0.27.1
# 此后啟動test容器即可在pycharm等python編輯器中配置ssh解釋器到該環(huán)境,
# 默認(rèn)地址為localhost:8022,用戶名root,密碼為新設(shè)置的passwd
2. determined配置(詳細(xì)說明)
- 安裝determined
pip install determined
- 啟動master節(jié)點(diǎn),默認(rèn)端口是8080
det deploy local master-up
# 關(guān)閉master節(jié)點(diǎn)
# det deploy local master-down
- agent配置:新建文件
agent-config.yaml
,輸入以下內(nèi)容并按需調(diào)整
## The hostname or IP address of the Determined master.
master_host: ip_of_your_master_node
## The port of the Determined master.
master_port: 8080
## The ID of this agent; defaults to the hostname of the current machine. Agent IDs must be unique## within a cluster.
agent_id: rtx3090_0
## The label of this agent. Agents with labels may only run workloads with the
## corresponding label.
label: rtx3090
## The GPUs that should be exposed as slots by the agent. A comma-separated list of GPUs,
## each specified by a 0-based index, UUID, PCI bus ID, or board serial number.
# http_proxy: ip_of_proxy
# https_proxy: ip_of_proxy
主要配置3個內(nèi)容:文章來源:http://www.zghlxwxcb.cn/news/detail-838193.html
- Master節(jié)點(diǎn),用于識別Master節(jié)點(diǎn)
- agent_id和label,分別對應(yīng)本機(jī)id和組名,根據(jù)顯卡型號命名即可
- 科學(xué)上網(wǎng)代理
- agent節(jié)點(diǎn)啟動:
det deploy local agent-up <master_ip> --agent-config-path <path to agent-config.yaml`>
##
# 也可以使用:
# docker run --gpus all -v /var/run/docker.sock:/var/run/docker.sock -v "$PWD"/agent-config.yaml:/etc/determined/agent.yaml determinedai/determined-agent:0.27.1
# 注意最后的版本號要和安裝的determined版本號對應(yīng),一般為最新(運(yùn)行det -v可以查看當(dāng)前版本號)
# "$PWD"/agent-config.yaml`是上一步新建的配置文件路徑,按需調(diào)整(PWD表示當(dāng)前工作目錄)
# 啟動后可在web端看到當(dāng)前cluster狀態(tài)有變化,web端訪問地址:masterIP:8080
##
# agent節(jié)點(diǎn)關(guān)閉
# det deploy local agent-down
3. 使用
- master節(jié)點(diǎn)啟動后即可在web端對應(yīng)地址看到當(dāng)期系統(tǒng)狀態(tài),默認(rèn)地址:
masterip:8080
,默認(rèn)登錄用戶admin,默認(rèn)無密碼,直接登錄即可 - 終端機(jī)安裝determined,并配置master節(jié)點(diǎn)ip后,可以運(yùn)行指令從命令行進(jìn)行任務(wù)配置
- master節(jié)點(diǎn)IP配置
- 全局環(huán)境變量形式
- master節(jié)點(diǎn)IP配置
# 開機(jī)自動增加環(huán)境變量
sudo nano /etc/profile
# 添加如下內(nèi)容:
# export DET_MASTER=ip_of_your_master_node
sudo source /etc/profile
- determined用戶登錄
admin用戶可以管理用戶添加刪除,具體參考用戶管理文檔。
det user login
# 輸入賬號密碼即可
- 任務(wù)配置文件編寫(詳細(xì)配置)
description: your_task_name
resources:
agent_label: rtx3090
slots: 1
# use same host_Path and container_path to avoid problems when downloading checkpoint
bind_mounts:
- host_path: /home/test/project
container_path: /home/test/project
environment:
image: determinedai/environments:cuda-11.3-pytorch-1.12-tf-2.11-gpu-0.27.1
environment_variables:
- http_proxy=your_proxy
- https_proxy=your_proxy
以上涵蓋了開啟任務(wù)所需的基本設(shè)置,包括:文章來源地址http://www.zghlxwxcb.cn/news/detail-838193.html
- description: 任務(wù)名
- resources: 要開啟任務(wù)的GPU類型(對應(yīng)label)和數(shù)量(對應(yīng)slots)
- bind_mounts: 掛載分布式存儲到docker容器內(nèi),host_path為物理機(jī)路徑,container_path為容器內(nèi)路徑
- environment: docker容器的環(huán)境配置,包括使用的鏡像和環(huán)境變量。
- 啟動實(shí)驗(yàn):
det experiment create const.yaml <代碼所在文件夾路徑>
# 代碼所在路徑中的全部文件將被上傳到容器中啟動訓(xùn)練,注意路徑下的文件總大小不要超過95M,數(shù)據(jù)集最好使用bind mounts的方式掛載到容器內(nèi)
- Docker image配置:determined官方常用image地址
到了這里,關(guān)于determined ai及本地調(diào)試環(huán)境配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!