书生大模型实战营闯关(入门岛)Linux + internstudio

     在这里主要给大家介绍一下如何实现远端映射,在本地终端或vscode链接开发机并执行一系列linux基础操作。

SSH远程链接

powershell远程链接

VScode 远程链接

下载remote -ssh

链接

远程连接完成以后,可以选择打开的文件夹,也可以称为工作目录,你可以选择开发机中的也可以选择本地的,开发机中的文件夹,就是我们前面提到的云盘

当下一次进行远程连接的时候,就不需要输入登录命令等信息了,只需要打开vscode的远程连接就可以看到第一次连接的开发机信息,下面的root代表我们第一连接开发机时使用的是/root工作目录

什么是端口映射

端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。

那么我们使用开发机为什么要进行端口映射呢?

因为在后续的课程中我们会进行模型web_demo的部署实践,那在这个过程中,很有可能遇到web ui加载不全的问题。这是因为开发机Web IDE中运行web_demo时,直接访问开发机内 http/https 服务可能会遇到代理问题,外网链接的ui资源没有被加载完全。

所以为了解决这个问题,我们需要对运行web_demo的连接进行端口映射,将外网链接映射到我们本地主机,我们使用本地连接访问,解决这个代理问题。下面让我们实践一下。

所以为了解决这个问题,我们需要对运行web_demo的连接进行端口映射,将外网链接映射到我们本地主机,我们使用本地连接访问,解决这个代理问题。下面让我们实践一下。

我们先根据一个图了解一下开发机端口映射是如何工作的:

下面会有实践步骤这里先理解如何进行端口映射的

ssh -p 37367 root@ssh.intern-ai.org.cn -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

1.我们还是来到开发机界面,找到我们的开发机,点击自定义服务,复制第一条命令,

下面给他大家介绍一下命令各部分的含义:

  • -p 37367:是指定 SSH 连接的端口为 37367,这个前面提到过。

  • root@ssh.intern-ai.org.cn:表示要以 root 用户身份连接到 ssh.intern-ai.org.cn 这个主机。

  • -CNg

    • -C 通常用于启用压缩。

    • -N 表示不执行远程命令,仅建立连接用于端口转发等。

    • -g 允许远程主机连接到本地转发的端口。

  • -L {本地机器_PORT}:127.0.0.1:{开发机_PORT}:这是设置本地端口转发,将本地机器的指定端口(由 {本地机器_PORT} 表示)转发到远程主机(这里即 ssh.intern-ai.org.cn)的 127.0.0.1 (即本地回环地址)和指定的开发机端口(由 {开发机_PORT} 表示)。

  • -o StrictHostKeyChecking=no:关闭严格的主机密钥检查,这样可以避免第一次连接时因为未知主机密钥而产生的提示或错误。

当你运行一个web demo的时候,就可以使用这个命令进行端口映射,举个例子:

我们创建一个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()

在开发机跑这个python文件

powershell 建立映射(注意端口号 改成自己的)

ssh -p xxxxx root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

成功

使用vscode

当然,如果我们运行不同的web ui的话,需要重复输入命令,这样很麻烦,这就需要用到VScode了。前面我们已经SSH远程连接了开发机,VScode提供了自动端口映射的功能,我们不需要手动配置,我们可以使用“Ctrl+Shift+~”快捷键唤醒终端,在终端的右侧可以找到端口选项:

linux基础命令

3. Linux 基础命令

这一部分我会带着大家了解Linux的一些基础操作,还有使用一些工具。让大家能够在遇到问题的时候,可以自行解决,如果大家有遇到什么问题的话,也可以在这里评论,我会及时给大家回答。

因为我们使用开发机时很少使用到权限管理,所以我们就不介绍了。(后面的操作均在VScode的终端中进行)

3.1 文件管理

在 Linux 中,常见的文件管理操作包括:

  • 创建文件:可以使用 touch 命令创建空文件。

  • 创建目录:使用 mkdir 命令。

  • 目录切换:使用cd命令。

  • 显示所在目录:使用pwd命令。

  • 查看文件内容:如使用 cat 直接显示文件全部内容,moreless 可以分页查看。

  • 编辑文件:如 vivim 等编辑器。

  • 复制文件:用 cp 命令。

  • 创建文件链接:用ln命令。

  • 移动文件:通过 mv 命令。

  • 删除文件:使用 rm 命令。

  • 删除目录rmdir(只能删除空目录)或 rm -r(可删除非空目录)。

  • 查找文件:可以用 find 命令。

  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。

  • 处理文件:进行复杂的文件操作,可以使用sed命令。

创建conda环境(VScode)

终端输入 conda create -n name python=3.8

输入activate + name 激活环境

studio-conda使用与Shell(扩展,不需要在开发机中操作)

这一部分属于扩展的部分,因为我觉得这一部分非常有趣,也非常实用,所以如果大家有兴趣的可以学习一下。

我们先来介绍一下studio-conda,这是开发机内置的一个命令,它通过Shell脚本来实现的。什么是Shell脚本呢?

Shell 脚本 是一种包含一系列命令的文本文件,这些命令按照特定的顺序排列,用于在 Unix/Linux 或类似的操作系统环境中自动执行任务。

Shell 脚本通常使用 Shell 语言编写,常见的 Shell 语言如 Bash、Sh 等,就是我们前面所介绍了Linux基础命令,这就属于Shell语言。

它有以下几个重要特点:

  1. 自动化:可以将一系列重复、复杂的操作编写为一个脚本,然后只需运行脚本即可自动完成这些操作,从而节省时间和减少错误。例如,每天定时备份重要文件的脚本。

  2. 系统管理:用于管理系统配置、用户权限、进程控制等。比如,创建新用户并设置其权限的脚本。

  3. 批处理:能够同时处理多个文件或数据。例如,将一批图片文件从一种格式转换为另一种格式的脚本。

  4. 流程控制:像条件判断(if-else)、循环(for、while)等,使脚本能够根据不同的情况执行不同的操作。

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值