目录
InternStudio开发机的搭建
介绍
InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。
创建开发机
1. 登录InternStudio平台 InternStudioOpenAIDE 是面向算法开发者与研究员的云端集成开发环境。基于「容器实例」,「镜像中心」,「分布式训练」,「公开数据集」模块为用户提供 “算力、算法、数据” 深度学习模型训练三要素,让算法开发变得更简单、更方便https://studio.intern-ai.org.cn/2. 创建一个开发机
3. 选择配置
4. 启动并进入开发机
进入开发机以后可以看到开发机的主页面,开发机有三种模式可以选择:JupyterLab、终端和VScode
使用vscode进行SSH远程连接
1. 下载远程连接的插件
2. 安装完成插件以后,点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令。
3. 添加开发机SSH连接的登录命令
将复制的命令粘贴到vscode中
配置文件默认就行
然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。
将上面的密码复制下来进行登录
使用端口映射,本地访问hello_world.py
1. 在root目录下创建一个demo的文件夹,并新增一个py文件
hello_wold.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()
2. 端口映射
可以使用SSH命令进行端口映射
也可以使用vscode进行端口映射
3. 运行hello_world.py
终端中输入
就可以使用本地地址访问python文件了
Linux的基本命令
文件管理
创建文件
可以使用 touch 命令创建空文件。
创建目录
使用 mkdir 命令。
目录切换:
使用cd命令。
显示所在目录
使用pwd命令。
- 查看文件内容:如使用 cat 直接显示文件全部内容,more 和 less 可以分页查看。
- -a,–show-all等价于-vET
- -b,–number-non空白数非空输出行,覆盖-n
- -e, 等价于-vE
- -E,–show-结束显示$在每一行的末尾
- -n,–number编号所有输出行
- -s,–crick-空白抑制重复的空输出行
- -t等价于-vT
- -t,–show-tabs将制表符显示为^I
- -v,–show非打印使用^和M-表示法,LFD和TAB除外
编辑文件:
如 vi 或 vim 等编辑器。
- 当我们需要编辑文件的时候可以使用vi或者vim命令,当你进入文件编辑以后,有三种模式:
- 进入编辑模式可以使用i,vim的方便之处就是可以在终端进行简单的文件修改。
复制文件
用 cp 命令。
- 它是用来将一个文件或者目录复制到另一个目录下的操作,常用的使用有:
- 复制文件:cp 源文件 目标文件
- 复制目录:cp -r 源目录 目标目录
创建文件链接
用ln命令。
- 这个就和windows的快捷方式一样。
- linux中链接分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
- 所以我们一般使用软连接,它的常用的使用方法如下:
ln [参数][源文件或目录][目标文件或目录]
- 参数如下:
- -s:创建软链接(符号链接)也是最常用的;
- -f:强制执行,覆盖已存在的目标文件;
- -i:交互模式,文件存在则提示用户是否覆盖;
- -n:把符号链接视为一般目录;
- -v:显示详细的处理过程。
移动文件
通过 mv 命令。
- mv是用来移动文件或者目录的,同时还可以进行重命名。
- 常用参数:
- -i:交互模式,覆盖前询问。
- -f:强制覆盖。
- -u:只在源文件比目标文件新时才进行移动。
- 使用示例:
- mv file1.txt dir1/:将文件 file1.txt 移动到目录 dir1 中。
- mv file1.txt file2.txt:将文件 file1.txt 重命名为 file2.txt。
- 删除文件:使用 rm 命令。
- rm命令则是用来删除文件或者目录的。
删除目录
rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
- 常用参数:
- -i:交互模式,删除前询问。
- -f:强制删除,忽略不存在的文件,不提示确认。
- -r:递归删除目录及其内容。
- 使用示例:
- rm file.txt:删除文件 file.txt。
- rm -r dir1/:递归删除目录 dir1 及其所有内容。
查找文件
可以用 find 命令。
- find命令是Linux系统中一个强大的文件搜索工具,它可以在指定的目录及其子目录中查找符合条件的文件或目录,并执行相应的操作。
- 以下是find命令的一些常见用法:
- 按文件名查找:使用-name选项按照文件名查找文件。例如,find /path/to/directory -name "file.txt"将在指定目录及其子目录中查找名为file.txt的文件。
- 按文件类型查找:使用-type选项按照文件类型查找文件。例如,find /path/to/directory -type f将查找指定目录及其子目录中的所有普通文件。
- 按文件大小查找:使用-size选项按照文件大小查找文件。例如,find /path/to/directory -size +100M将查找指定目录及其子目录中大于100MB的文件。
- 按修改时间查找:使用-mtime、-atime或-ctime选项按照文件的修改时间、访问时间或状态更改时间查找文件。例如,find /path/to/directory -mtime -7将查找指定目录及其子目录中在7天内修改过的文件。
- 按文件权限查找:使用-perm选项按照文件权限查找文件。例如,find /path/to/directory -perm 755将查找指定目录及其子目录中权限为755的文件。
- 按用户或组查找:使用-user或-group选项按照文件的所有者或所属组查找文件。例如,find /path/to/directory -user username将查找指定目录及其子目录中属于用户username的文件。
- 执行操作:使用-exec选项可以对找到的文件执行相应的操作。例如,find /path/to/directory -name “*.txt” -exec rm {} ;将删除找到的所有以.txt结尾的文件。
查看文件或目录的详细信息
使用ls命令,如使用 ls -l查看目录下文件的详细信息。
- 常用参数及使用方法如下:
- -a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)。
- -l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。
- -h:与-l结合使用,以人类可读的方式显示文件大小(如K、M、G等)。
- -R:递归列出子目录的内容。
- -t:按文件修改时间排序显示
处理文件
进行复杂的文件操作,可以使用sed命令。
- sed命令是一种流编辑器,主要用于文本处理,在处理复杂的文件操作时经常用到,sed命令常用参数及使用示例如下:
- 参数说明:
- -e 或 --expression=:直接在命令行中指定脚本进行文本处理。
- -f<script文件> 或 --file=<script文件>:从指定的脚本文件中读取脚本进行文本处理。
- -n 或 --quiet 或 --silent:仅打印经过脚本处理后的输出结果,不打印未匹配的行。
- 动作说明:
- a:在当前行的下一行添加指定的文本字符串。
- c:用指定的文本字符串替换指定范围内的行。
- d:删除指定的行。
- i:在当前行的上一行添加指定的文本字符串。
- p:打印经过选择的行。通常与 -n 参数一起使用,只打印匹配的行。
- s:使用正则表达式进行文本替换。例如,s/old/new/g 将所有 “InternLM” 替换为 “InternLM yyds”。
- 示例
- 在示例中使用了echo命令,这和python中的print一样,用来打印内容,这里使用管道符>将InternLM打印到file文件中,常用的管道符还有<和|,比如我们可以使用grep命令来查看python中安装的包含os字段的包:
- grep是一个强大的文本搜索工具。常用参数如下:
- -i:忽略大小写进行搜索。
- -v:反转匹配,即显示不匹配的行。
- -n:显示行号。
- -c:统计匹配的行数。
进程管理
进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:
查看正在运行的进程
ps aux # 显示系统所有进程的详细信息
动态显示正在运行的进程
top # 启动top命令,动态显示进程信息
树状查看正在运行的进程
pstree # 显示进程树
用于查找进程
pstree # 显示进程树
查找匹配条件的进程
pgrep -u username # 查找特定用户的所有进程
更改进程的优先级
nice -n 10 long-running-command # 以较低优先级运行一个长时间运行的命令
显示进程的相关信息
jobs # 列出当前会话的后台作业
将进程调入后台,或者调回前台
bg # 将最近一个挂起的作业放到后台运行
fg # 将后台作业调到前台运行
杀死进程
kill -9 PID # 强制杀死进程
NVIDIA 系统管理
显示 GPU 状态的摘要信息
nvidia-smi
显示详细的 GPU 状态信息
nvidia-smi -l 1 # 这个命令会每1秒更新一次状态信息。
显示 GPU 的使用历史
nvidia-smi -h
列出所有 GPU 并显示它们的 PID 和进程名称
nvidia-smi pmon
强制结束指定的 GPU 进程
nvidia-smi --id=0 --ex_pid=12345 # 这会强制结束 GPU ID 为 0 上的 PID 为 12345 的进程。
设置 GPU 性能模式
nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1
重启 GPU
nvidia-smi --id=0 -r # 这会重启 ID 为 0 的 GPU。
显示帮助信息
nvidia-smi -h