Ubuntu安装DGL并提供GPU支持

该文详细介绍了如何在Ubuntu18.04系统中,利用Docker安装特定CUDA版本的PyTorch和DGL库。首先,创建pip配置文件以使用清华源加速下载,然后安装与CUDA版本匹配的PyTorch和DGL。接着,打包DGL环境到Docker镜像,并编写docker-compose.yml文件以部署单个容器。此外,还涉及到了如何在Docker容器中安装SSH服务,以便于多容器间的通信和管理。
摘要由CSDN通过智能技术生成

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
  • 安装与cuda版本对应的合适版本的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配置而不是容器名称,否则会出现无法监听的情况。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值