书生大模型闯关记录(Linux + InternStudio 关卡)

目录

InternStudio开发机的搭建

介绍

创建开发机

使用vscode进行SSH远程连接

使用端口映射,本地访问hello_world.py

Linux的基本命令

文件管理

创建文件

创建目录

目录切换:

显示所在目录

编辑文件:

复制文件

创建文件链接

移动文件

删除目录

查找文件

查看文件或目录的详细信息

处理文件

进程管理

查看正在运行的进程

动态显示正在运行的进程

树状查看正在运行的进程

用于查找进程

查找匹配条件的进程

更改进程的优先级

显示进程的相关信息

将进程调入后台,或者调回前台

杀死进程

NVIDIA 系统管理

显示 GPU 状态的摘要信息

显示详细的 GPU 状态信息

显示 GPU 的使用历史

列出所有 GPU 并显示它们的 PID 和进程名称

强制结束指定的 GPU 进程

设置 GPU 性能模式

重启 GPU

显示帮助信息

GPU的信息介绍


InternStudio开发机的搭建

介绍

InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。

创建开发机

1. 登录InternStudio平台 InternStudioOpenAIDE 是面向算法开发者与研究员的云端集成开发环境。基于「容器实例」,「镜像中心」,「分布式训练」,「公开数据集」模块为用户提供 “算力、算法、数据” 深度学习模型训练三要素,让算法开发变得更简单、更方便icon-default.png?t=N7T8https://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命令,当你进入文件编辑以后,有三种模式:
  • image.png
  • 进入编辑模式可以使用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”。
  • 示例
    • image.png
  • 在示例中使用了echo命令,这和python中的print一样,用来打印内容,这里使用管道符>将InternLM打印到file文件中,常用的管道符还有<和|,比如我们可以使用grep命令来查看python中安装的包含os字段的包:
    • image.png
  • 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

GPU的信息介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值