Bootstrap

Camp4-L0:Linux 前置基础

书生浦语大模型实战营Camp4-L0:Linux前置基础

  • 教程地址:https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux
  • 任务地址:https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/linux/task.md
任务描述完成所需时间
闯关任务完成SSH连接与端口映射并运行hello_world.py10min
可选任务 1将Linux基础命令在开发机上完成一遍10min
可选任务 2使用 VSCODE 远程连接开发机并创建一个conda环境10min
可选任务 3创建并运行test.sh文件10min

闯关任务

完成SSH连接与端口映射并运行hello_world.py

第一步:首先按照教程创建开发机,然后点击ssh连接

在这里插入图片描述
在这里插入图片描述

第二步:按照教程配置ssh公钥以及配置vscode

在这里插入图片描述
然后就可以愉快地通过vscode连接开发机了,非常丝滑:
在这里插入图片描述

第三步:创建环境并安装gradio,主要命令如下

conda create -n py10 python=3.10 -y
conda activate py10
pip install gradio

第四步:新建文件夹homework,用于保存作业,新建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()

运行hello_world.py:

python hello_world.py

第五步:使用ssh做端口转发,或者直接用vscode地端口转发即可,命令行端口转发如下:

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no

例如:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

说明:

个人PC会远程连接到开发机唯一暴露在外的37367端口,(这个在SSH的时候提到过每个人的开发机暴露的端口都不一样),并设置隧道选项。暴露端口是作为中转站进行流量的转发。

  • -C:启用压缩,减少传输数据量。
  • -N:不执行远程命令,只建立隧道。
  • -g:允许远程主机连接到本地转发的端口。

当在个人PC上执行这个SSH命令后,SSH客户端会在本地机器的7860端口上监听。

任何发送到本地7860端口的流量,都会被SSH隧道转发到远程服务器的127.0.0.1地址上的7860端口。

这意味着,即使开发机的这个端口没有直接暴露给外部网络,我们也可以通过这个隧道安全地访问远程服务器上的服务。

划重点:强烈建议配置ssh公钥,然后配置好vscode,用vscode做端口自动转发很方便
在这里插入图片描述
运行结果如下:
在这里插入图片描述

可选任务1

将Linux基础命令在开发机上完成一遍

这个按照教程跑一遍即可,这里做个记录:

文件管理

  • 创建文件:可以使用 touch 命令创建空文件。
  • 创建目录:使用 mkdir 命令。
  • 目录切换:使用cd命令。
  • 显示所在目录:使用pwd命令。
  • 查看文件内容:如使用 cat 直接显示文件全部内容,moreless 可以分页查看。
  • 编辑文件:如 vivim 等编辑器。
  • 复制文件:用 cp 命令。
  • 创建文件链接:用ln命令。
  • 移动文件:通过 mv 命令。
  • 删除文件:使用 rm 命令。
  • 删除目录rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
  • 查找文件:可以用 find 命令。
  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。
  • 处理文件:进行复杂的文件操作,可以使用sed命令。

进程管理

进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:

  • ps:查看正在运行的进程
  • top:动态显示正在运行的进程
  • pstree:树状查看正在运行的进程
  • pgrep:用于查找进程
  • nice:更改进程的优先级
  • jobs:显示进程的相关信息
  • bg 和 fg:将进程调入后台
  • kill:杀死进程

工具使用

  • 这里介绍了tmux,本人还是更喜欢screen这个工具,选择其一就好
  • conda,环境管理
  • shell,基本操作

可选任务2

使用 VSCODE 远程连接开发机并创建一个conda环境
这个在做闯关任务的时候,已经完成了,用vscode很是方便

可选任务3

**创建并运行test.sh文件 **
创建一个test.sh文件,用于安装xtuner环境,内容如下

# 创建虚拟环境
conda create -n llamaindex python=3.10 -y
conda activate llamaindex
pip install llama-index==0.10.38 

运行bash test.sh即可。
在这里插入图片描述

;