Featured image of post 浪潮人工智能平台使用心得

浪潮人工智能平台使用心得

记录我折腾服务器的过程,为初次接触此平台的用户提供一个简单的教程

随着学习的深入,对算力的要求越来越高。但我实验室的电脑并没有配置显卡,所以便需要使用学院的服务器。成功拿到账号后,却发现这个平台并没有我想象的那么好用😇为了达到最舒适的使用体验,开搞!

# 配置开发镜像

平台里虽然预置了一些开发环境,但仍然缺少一些需要的软件,每次连入后再重新安装实在是不优雅。那么最好的方案就是配置好一套环境,直接拉取就能使用。在我之前,已经有位大佬构建了一套开发环境并进行了分享,可是镜像大小达到了惊人的18.4G😯(容量大说明功能多,此处并没有贬低的意思)。我个人比较喜欢Arch的哲学,即Keep It Simple, Stupid(对应中文为“保持简单,且一目了然”)。为此,我决定构建一个最小化的开发环境且可以开箱即用。

通过探究发现,这个平台上所有的开发环境都是一个Docker容器。所以,我们只要构建好镜像并上传就OK了。构建镜像有两种方式,一种是进入容器手动配置然后使用docker commit ...保存修改;另一种则是使用Dockerfile。为了便于维护和修改,我选择了第二种。

接下来就是明确需求了,我对其的要求有几点:

  • 安装好显卡驱动,可以直接使用cuda
  • 安装好conda,可以便捷的管理python开发环境
  • 有一个易用的终端,方便调试

cuda很好解决,直接在nvidia官方的镜像上进行修改就行了

对于conda,原版的Anaconda过于臃肿,不符合KISS原则。同时,当环境复杂(condapip混用)时,solving environment这一步可以卡到你怀疑人生,于是我选择了使用C++重构的mamba,并选择micromamba进一步压缩体积。

对于终端,那就无脑使用zsh并加载oh-my-zsh并安装我日常使用的插件。

如此一来,就可以开写Dockerfile了。

📃展开代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# base image
FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04

MAINTAINER luoboQAQ

# 设置国内镜像源并安装软件
RUN set -ex \
	&& sed -i 's@/archive.ubuntu.com/@/mirrors.bfsu.edu.cn/@g' /etc/apt/sources.list \
	&& apt-get clean \
	&& apt-get update \
	&& apt-get install -y --no-install-recommends openssh-client openssh-server git zsh curl vim \
	&& rm -rf /var/lib/apt/lists/*	

# 配置openssh[https://github.com/wjyzzu/inpsur-dockerfile/blob/main/base/ubuntu/Dockerfile]
RUN set -ex \
	&& mkdir -p /var/run/sshd \
	&& /usr/bin/ssh-keygen -A \
	&& cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
	&& echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
	&& cat /etc/ssh/sshd_config | grep -v  PermitRootLogin> /etc/ssh/sshd_config.new \
	&& echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.new \
	&& mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
	&& mv /etc/ssh/sshd_config.new /etc/ssh/sshd_config

# 配置oh-my-zsh
RUN set -ex \
    && git clone https://gitee.com/mirrors/oh-my-zsh ~/.oh-my-zsh \  
    && cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc \
    && git clone https://gitee.com/lightnear/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \
    && sed -i "s/plugins=(git.*)$/plugins=(git zsh-syntax-highlighting)/" ~/.zshrc \
	&& chsh -s /bin/zsh \
	&& rm -rf /var/lib/apt/lists/*

# 安装micromamba并配置国内源
RUN set -ex \
	&& curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba \
	&& ./bin/micromamba shell init -s zsh -p ~/micromamba \
	&& echo "\nalias conda='micromamba'" >> ~/.zshrc \
	&& echo "channels: \n\
  - defaults \n\
show_channel_urls: true \n\
default_channels: \n\
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main \n\
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r \n\
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2 \n\
custom_channels: \n\
  conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  pytorch-lts: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud \n\
  deepmodeling: https://mirrors.bfsu.edu.cn/anaconda/cloud/" > ~/.condarc \
	&& echo "[global] \n\
index-url = https://mirrors.bfsu.edu.cn/pypi/web/simple" > /etc/pip.conf

# 配置网络代理
RUN set -ex \
	&& echo "\nexport HTTP_PROXY='http://127.0.0.1:3128'" >> ~/.zshrc \
	&& echo "export HTTPS_PROXY='http://127.0.0.1:3128'" >> ~/.zshrc \
	&& echo "export ALL_PROXY='http://127.0.0.1:3128'" >> ~/.zshrc

EXPOSE 22
WORKDIR /root
ENTRYPOINT ["/bin/zsh"]

除了上面提到的几点,我还增加了:

  • 镜像已配置好国内镜像源,方便构建以及使用时安装新的包
  • 配置openssh,使其可以被浪潮平台接入并提供SSH服务
  • 预先安装好vim,便于配置文件的修改
  • 提前设置好网络代理,便于连接互联网
  • 设置别名:conda->micromamba,方便日常使用

由于服务器没有网络,需要我们手动上传镜像,使用命令docker save -o [TAGS]打包成tar包并上传至系统中。

# 小结

希望这篇文章可以帮助大伙快速上手该平台,毕竟有这么好的资源就要好好利用起来。

Licensed under CC BY-NC-SA 4.0
最后更新于 2023-11-22 13:24:00