创建一个开发机
进入控制台 `https://studio.intern-ai.org.cn/console/instance`,创建开发机,按需求选择配置。
进入开发机页面,启动开发机
# 连接开发机
连接方式有多种,推荐使用 ssh 连接,编写代码更加方便。点击 ssh 连接,会弹出登录命令和密码。复制登录命令到控制台执行,然后在复制密码粘贴过去,即可通过ssh进入开发机。
每次登录都要输入密码太麻烦了。可以配置免密登录。
- 本机命令行输入 ssh-keygen 生成 ssh 密钥对
- 找到生成的 id_rsa.pub 文件,拷贝文件中的内容
- 找到首页的配置 ssh key,选择添加 ssh 公钥,将复制的公钥粘贴过去
这样就完成了 ssh 免密登录~
端口映射
后续的课程中会进行模型web_demo的部署实践,在开发机Web IDE中运行web_demo时,直接访问开发机内 http/https 服务可能会遇到代理问题,外网链接的ui资源没有被加载完全。
所以为了解决这个问题,需要对运行web_demo的连接进行端口映射,将外网链接映射到我们本地主机,使用本地连接访问,解决这个代理问题。
来到开发机界面,找到我们的开发机,点击自定义服务,复制第一条命令
-
-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项目,下面是web项目的代码
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()
安装必备的包:pip install gradio==4.29.0
运行代码:python hello_world.py
尝试本地访问项目,无法访问。
现在,我们在本机的 powershell 中执行 ssh 转发命令
sh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
可以正常访问了