Ubuntu安装DGL
硬件/软件配置
- ubuntu 18.04
- nvidia-smi 440.100
使用docker进行安装
可根据需求以root用户权限或以非root用户权限安装Pytorch和DGL。
- 需且仅需安装合适版本的cuda
- 配置pip源
cd ~ mkdir .pip cd .pip touch pip.conf echo "[global]" >> ~/.pip/pip.conf echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> ~/.pip/pip.conf echo "[install]" >> ~/.pip/pip.conf echo "trusted-host = https://pypi.tuna.tsinghua.edu.cn" >> ~/.pip/pip.conf cd /home/MyWorkspace
- 安装与cuda版本对应的合适版本的pytorch
- Previous PyTorch Versions
- 使用pip安装pytorch
- 安装与cuda版本对应的合适版本的dgl
- Deep Graph Library
- 使用pip安装dgl
使用Docker进行部署DGL
- 打包镜像
sudo docker commit -m "pip install dgl with cuda:10.2 and pytorch:1.12.0" container_id dgl_dist_single:v1.0
- 编写docker-compose.yml以部署单个容器
version: '3' services: dgl_dist_single_0: container_name: dgl_dist_single_0 image: dgl_dist_single:v1.0 user: "dgl" working_dir: /home/MyWorkspace volumes: - ./dgl:/home/MyWorkspace deploy: resources: reservations: devices: - driver: nvidia count: "all" capabilities: [gpu] stdin_open: true tty: true command: /bin/bash -c "chown -R 1002:1002 . && /bin/bash"
- 使用
docker-compose
部署容器sudo docker-compose up -d
使用Docker部署DistDGL
-
安装
sshd
并配置ssh
(在安装DGL之前或之后均可)apt update apt install openssh-server mkdir /var/run/sshd ssh-keygen cd ~/.ssh cp id_rsa.pub authorized_keys
- 安装openssh-server,并根据报错信息覆盖不兼容的相应软件。
- 若以非root用户权限启动容器,则需要先执行
su dgl
进行用户转换,再生成密钥。 - 若以非root用户权限启动容器,则需要获取root权限启动
sshd
,需要使用expect
命令进行权限转换,需要为root设置登录密码。
-
打包镜像
sudo docker commit -m "pip install dgl with cuda:10.2 and pytorch:1.12.0 and sshd" container_id dgl_single:v1.0
-
部署单个容器
version: '3.5' services: dgl_cluster: image: dgl_single:v1.0 user: "dgl" working_dir: /home/dgl/MyWorkspace volumes: - ./dgl:/home/dgl/MyWorkspace shm_size: '32g' storage_opt: size: '256g' deploy: resources: limits: cpus: '8.0' memory: 16G reservations: devices: - driver: nvidia count: "all" capabilities: [gpu] stdin_open: true tty: true command: /bin/bash -c "/bin/bash /home/dgl/.ssh/sshd.sh && /bin/bash"
- 设置
shm_size
避免bus error。 /bin/bash /home/dgl/.ssh/sshd.sh
用于以root权限启动sshd
。
- 设置
-
部署多个镜像
sudo docker-compose up --scale dgl_cluster=2 -d
- 部署多个镜像时,需要把container_name注释
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
可以查看容器的IP,使用scale
启动的容器的ip在同一子网下,为xx.xx.xx.02-xx.xx.xx.${number_of_container+1}
。- 不同的docker容器之间可以通过容器名称相互直接访问,比如
ssh root@container_name
- ip_config.txt需要使用ip配置而不是容器名称,否则会出现无法监听的情况。