在线文档
任务:
任务描述 | 完成所需时间 | 完成度 | |
---|---|---|---|
闯关任务 | 完成SSH连接与端口映射并运行hello_world.py | 10min | 完成 |
可选任务 1 | 将Linux基础命令在开发机上完成一遍 | 10min | 部分完成 |
可选任务 2 | 使用 VSCODE 远程连接开发机并创建一个conda环境 | 10min | 完成 |
可选任务 3 | 创建并运行test.sh 文件 | 10min | 未完成* |
*
:在考虑用其他方式实现conda env
打包永久化使用.
0.闯关任务
0.1 启动实例
- 去https://studio.intern-ai.org.cn/console/instance/开一台机器.根据文档说明,我选择了Cuda12的镜像,取名
test
,然后算力10%
,时间1h
用来测试.点击创建后跳转控制台,发现显示 排队 字样,我是排名1
但是我仍然等待了几分钟才启动实例完成.
0.2 连接实例
- 方案选择:考虑到vscode支持jupyter页面和kernel管理,且很方便做端口映射)不需要输入
ssh -L
等指令,且 vscode remote
对于SSH和SCP文件管理支持都好我选择使用VSCODE连接实例.另外,remote SSH对于remote hosts的管理也很方便,只要修改配置文件即可实现保存hosts,不检测host指纹等设置,也就摒弃了ssh
之后带的一大坨**arg
. - 生成key:首先用
ssh-keygen
生成自己的私钥~/.ssh/id_ras
和公钥~/.ssh/id_rsa.pub
.由于我这边本来就是 UNIX 主机,已经生成过了,不赘述. - 管理后台注册key:
cat ~/.ssh/id_rsa.pub
看一下公钥的内容,鼠标复制控制台的内容,复制到管理页面->右上角->个人头像->访问管理->新页面:复制内容过去,取一个名字即可. - PS:当然根据一般经验,用
ssh-copy-id
也可以复制key到服务器,已知官方说明/root
是自带长期存储的,所以应该/root/.ssh/authorized_keys
能保存相关key.另外考虑到云服务器启动实例的AZ会变化等问题,所以使用网页后台管理key的方式最鲁棒.总之,我没有测试ssh-copy-id
- Remote SSH配置:打开VScode->左栏远程资源管理器->SSH右边
+
->复制网页的登录命令->粘贴在VSCode内->回车(可能会出现保存到配置文件等交互页面,我选择了~
下的文件而不是/etc
) - Remote SSH连接:我们刷新一下VScode中远程资源管理器,会出现
ssh.intern-ai.org.cn
字样,我们直接点击->
在本窗口打开远程实例.由于我们注册过key,登录不需要密码输入.但是第一次登录需要安装VScode Remote Server要等半分钟来自动安装和配置. - 新建文件夹,复制代码进去
(base) root@intern-studio-50066738:~# mkdir demo (base) root@intern-studio-50066738:~# cd demo/ (base) root@intern-studio-50066738:~/demo# vi hello_world.py (base) root@intern-studio-50066738:~/demo# cat hello_world.py import socket import re import gradio as gr # 获取主机名 def get_hostname(): hostname = socket.gethostname() match = re.search(r'-(\d+)$', hostname) name = match.group(1) return name # 创建 Gradio 界面 with gr.Blocks(gr.themes.Soft()) as demo: html_code = f""" <p align="center"> <a href="https://intern-ai.org.cn/home"> <img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;"> </a> </p> <h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1> <h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2> <p align="center"> <a href="https://github.com/InternLM/Tutorial/blob/camp3"> <img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;"> </a> </p> """ gr.Markdown(html_code) demo.launch() (base) root@intern-studio-50066738:~/demo#
- 启动 可选任务2 中做的
conda env
然后执行demo:(base) root@intern-studio-50066738:~/demo# conda activate demo && python hello_world.py Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
- 大约20s后,等终端出现
http://127.0.0.1:7860
字样时,Vscode会自动映射转发端口,此时点击右下角浏览器打开
即可展示效果!
1 可选任务 1 将Linux基础命令在开发机上完成一遍
- 检查环境:
df -h
所以永久化存储/root
是怎么实现限制存储大小的?(base) root@intern-studio-50066738:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 3.5T 146G 3.2T 5% / tmpfs 64M 0 64M 0% /dev tmpfs 1008G 0 1008G 0% /sys/fs/cgroup 29ee3a5c-ds7w.cn-wulanchabu.extreme.nas.aliyuncs.com:/share/aide/share 10T 8.2T 1.9T 82% /share 2995ed4baf5-nwi35.cn-wulanchabu.nas.aliyuncs.com:/aide/prod/50066738 10P 95T 10P 1% /root tmpfs 1008G 0 1008G 0% /dev/shm /dev/nvme0n1 3.5T 146G 3.2T 5% /etc/hosts tmpfs 1008G 12K 1008G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 1008G 12K 1008G 1% /proc/driver/nvidia /dev/sda1 440G 135G 287G 32% /usr/bin/nvidia-smi tmpfs 1008G 9.4M 1008G 1% /run/nvidia-persistenced/socket devtmpfs 1008G 0 1008G 0% /dev/nvidia5 tmpfs 1008G 0 1008G 0% /proc/acpi tmpfs 1008G 0 1008G 0% /proc/scsi tmpfs 1008G 0 1008G 0% /sys/firmware
cat /etc/apt/sources.list
看一下apt源,谢天谢地已经换好了.实测apt install
会在150kps
,体验存在问题!(base) root@intern-studio-50066738:~# cat /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse # deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
conda config --show-sources
这里是清华的源,感觉不很稳定.实际体验安装python基础env很慢(base) root@intern-studio-50066738:~# conda config --show-sources ==> /root/.condarc <== channels: - defaults custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/ default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 show_channel_urls: True
cat ~/.config/pip/pip.conf
pip也是清华源,🌟8. 实际体验良好!(base) root@intern-studio-50066738:~# cat ~/.config/pip/pip.conf [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
cat /etc/os-realese
:发现是Ubuntu 20.04 LTS
,该版本还不错,就是glibc
可能老点,可能会影响之后装现代一点的服务器监控软件.(base) root@intern-studio-50066738:~# cat /etc/os-release NAME="Ubuntu" VERSION="20.04.6 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.6 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
nvidia-smi
:是VRAM为10%的A100,驱动535,CUDA最高12,在2024年来说比较新.(base) root@intern-studio-50066738:~# nvidia-smi Sat Jul 13 11:17:20 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100-SXM4-80GB On | 00000000:8E:00.0 Off | 0 | | N/A 32C P0 65W / 400W | 4MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
conda env list
:发现PS1
中有(base)
标记,说明有conda
且conda init bash
成功.这里看看还预装了什么环境->哦,原来什么都没有.(base) root@intern-studio-50066738:~# conda env list # conda environments: # base * /root/.conda
- 安装软件
apt update && apt install curl wget git tmux vim tar zip -y
2 可选任务 2 | 使用 VSCODE 远程连接开发机并创建一个conda环境
- 由 闯关任务 要用
gradio
,那么我们直接一句话新建环境并集成python
gradio
conda create -n demo python=3.8 gradio==4.29.0 && conda activate demo
->失败了,好像conda tsinghua源不支持gradio,也可能别的conda源支持,算了用pip安吧conda create -n demo python -y && conda activate demo && pip install gradio==4.29.0