学习目标:
- 掌握在InternStudio 使用远程开发机Linux环境的方法。
学习内容:
- 在平台建立开发机
- ssh连接设置
- 完成端口映射并运行`hello_world.py` 进入开发环境(闯关任务)
- 一些新学习的Linux指令
- test.sh shell 脚本编写
作业内容:
1. 在书生平台建立开发机
InternStudio平台提供了非常好的Linux实操环境供大家学习书生大模型.
进入平台, 点击左边进入开发机, 创建开发机:
然后点击"选择镜像", 选择 cuda12.2-conda 镜像, 点击"使用", 开发机就创建好了.
成功启动开发机后, 可以直接点"进入开发机", 进入可以直接采用JupyterLab, VSCode通过浏览器访问使用开发机.
2. SSH连接
通过上图所示命令行, 可以直接使用密码访问到开发机. 但更多时候, 我们希望用密钥远程访问开发机:
在合适位置生成自己电脑的密钥,一路默认, 暂定名字是key
ssh-keygen -t rsa
在*nix系统中记得要改变key的权限为本用户只读, 否则连接会失败.
可以在上述界面左上角的"添加公钥"直接添加, 或使用`ssh-copy-id` 将 key 复制到远程主机.
sudo chmod 400 key
ssh-copy-id -i Somewhere_on_my_machine/key.pub -p 48438 root@ssh.intern-ai.org.cn
3. 完成端口映射并运行`hello_world.py` 进入开发环境(闯关任务)
hello_world.py 获取我在InternStudio的用户id, 并制作用于分享的gradio海报.
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
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()
在ssh中运行
python hello_world.py
目前gradio页面只在远端可以访问, 想要在本地访问进行端口映射:
得到gradio网页海报如下:
4. 一些新学习的Linux指令
在课程的学习中, 新学到了和gpu相关的一些指令:
1. 显示详细的 GPU 状态信息:
nvidia-smi -l 1
这个命令会每1秒更新一次状态信息。
2. 显示 GPU 的帮助信息:
nvidia-smi -h
3. 列出所有 GPU 并显示它们的 PID 和进程名称:
nvidia-smi pmon
4. 强制结束指定的 GPU 进程:
nvidia-smi --id=0 --ex_pid=12345
这会强制结束 GPU ID 为 0 上的 PID 为 12345 的进程。
5. 设置 GPU 性能模式:
nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1
第一个命令会为所有 GPU 设置为性能模式,第二个命令只针对 ID 为 0 的 GPU设置为性能模式。
6. 重启 GPU:
nvidia-smi --id=0 -r
这会重启 ID 为 0 的 GPU。
5. test.sh shell 脚本编写
#!/bin/bash
# 定义导出环境的函数
export_env() {
local env_name=$1
echo "正在导出环境: $env_name"
# 导出环境到当前目录下的env_name.yml文件
conda env export -n "$env_name" > "$env_name.yml"
echo "环境导出完成。"
}
# 定义还原环境的函数
restore_env() {
local env_name=$1
echo "正在还原环境: $env_name"
# 从当前目录下的env_name.yml文件还原环境
conda env create -n "$env_name" -f "$env_name.yml"
echo "环境还原完成。"
}
# 检查是否有足够的参数
if [ $# -ne 2 ]; then
echo "使用方法: $0 <操作> <环境名>"
echo "操作可以是 'export' 或 'restore'"
exit 1
fi
# 根据参数执行操作
case "$1" in
export)
export_env "$2"
;;
restore)
restore_env "$2"
;;
*)
echo "未知操作: $1"
exit 1
;;
esac
保存该脚本并给予运行权限, 可以使用该脚本导出或恢复conda环境.
总结:
今夏最棒的大模型学习方式, 快来扫码参加书生大模型实战营: