在autodl上建立新的虚拟机实例
创建虚拟机
对于第一次使用autodl的用户,进入autodl官网后;首先要进行账号的注册,如果是学生的话要记得做学生认证,这可以省一点钱。这些操作比较简单,这里不多介绍。
创建实例
注册完成后,点击右上角的控制台按钮,进入控制台的界面。如图:
随后,进入实例容器中,如图:
这里,展示了我们租用的所有实例,如图:
点击租用新实例,进入实例创建的界面,如图:
可以看到,这里可以选择合适的计费方式、地区、GPU类型、GPU 数量、数据盘大小、使用的镜像等。
这里,我们选择按量计费,重庆A区,4090D*1,500GB数据盘,已经如图镜像:
随后,点击创建实例,等待一段时间后,实例就创建成功了。
连接虚拟机
虽然autodl给出了几种不同的连接方式,但是这里我推荐使用SSH连接方式。并且是依赖密钥。
设置config
这里,我们首先复制登录指令,你会得到一个类似于ssh -p 12345 root@xxx.mmm.nnn.com
形式的指令。然后,进入用户下的.ssh
文件夹;如图
进入config
文件中,按照下面的格式写入:
1 | Host autodl |
设置密钥-公钥对
进入Terminal
,在windows上就是windows powershell
,输入cd ~/.ssh
进入了.ssh
文件夹中。
然后输入ssh-keygen -t rsa -C [user_name]
,这里的user_name
就是你的gcp的用户名,也就是从web登录后的xxx@mmm
中的xxx
;也就是root
随后会要求你输入一个保存的文件名,不妨设置为autodl
。
1 | ssh-keygen -t rsa -C root |
随后,会要求你输入一个密码,这里可以不设置,直接回车。然后,进入.ssh
中的autodl.pub
文件中,复制其中的内容。
然后,在容器实例中,进入设置密钥登录,如图:
随后,点击添加SSH公钥,将复制的公钥粘贴进去,点击确定,重启我们正在运行的实例,等待一段时间后,密钥就添加成功了。
连接虚拟机
进入Terminal
,输入ssh autodl
就可以进入我们的虚拟机了。
环境
CUDA
我一般会选择自带pytorch
的镜像,这样就不用自己按照CUDA
和CUDNN
了。但是,如果真的遇到需要自己按照,也是很简单的。
1. 安装内核头文件
按照以下步骤操作:
-
更新包列表:
1
sudo apt-get update
-
安装内核头文件:
1
sudo apt-get install linux-headers-$(uname -r)
-
重新运行NVIDIA驱动程序安装脚本:
1
sudo /opt/deeplearning/install-driver.bash
2. 验证安装
- 检查NVIDIA驱动程序是否正确安装:
1
nvidia-smi
示例步骤
请按照以下完整步骤操作:
1 | # 更新包列表 |
可能的其他情况
如果在运行上述步骤时仍然遇到问题,可以检查以下情况:
-
确认内核版本:
确认当前运行的内核版本:1
uname -r
确保你安装的内核头文件版本与该版本匹配。
-
手动指定内核源目录:
如果系统中有多个内核版本,可能需要手动指定内核源目录:1
sudo /opt/deeplearning/install-driver.bash --kernelsourcedir /usr/src/linux-headers-$(uname -r)
示例输出
成功运行这些步骤后,你应该看到 nvidia-smi
命令的输出,显示安装的NVIDIA驱动程序和GPU信息:
1 | Fri Jun 28 02:05:51 2024 |
pytorch
一般来说,pytorch
在原有的镜像中就已经正确的安装了,但是我们往往要在base
之外建立自己的虚拟环境,比如vision
,这时候,我们就需要安装自己的torch
了,这同样十分简单。
首先进入pytorch,在如图位置选择适合自己的torch
类型,值得注意的是Compute Platform是向下兼容的。
也就是说,如果使用的机器是CUDA Version: 12.0
那么就应该选择CUDA 11.8
!
到此为止,绝大多数通用的环境配置就搞完了,剩下的package就自己下载吧~~
修改默认环境
一般,默认的环境是conda
的base
环境;但是,这往往不是我们自己建立的环境;那么,最好还是把自己建立的虚拟环境设置为默认环境。
1 | conda config --set auto_activate_base false |
另一种办法是修改conda
的config
:
1 | conda activate gene |
然后使用conda info --envs
就可以看到gene
环境已经被激活。