第1关:Linux 前置基础——完成SSH连接与端口映射并运行hello_world.py
1.创建开发机
选择GPU和CUDA镜像
2.使用SSH远程连接开发机(并配置密钥完成免密连接)
在VSCode中安装remote SSH插件,输入创建的开发机中的SSH登陆指令和密码。
配置SSH密钥进行SSH远程连接,使用RSA算法生成密钥,在本地终端输入命令:
ssh-keygen -t rsa
一直回车,默认生成在~/.ssh/目录下,使用cat命令,以默认路径示例:
Get-Content C:/Users/用户名/.ssh/id_rsa.pub
回到开发机平台配置SSH Key:直接添加SSH公钥输入即可:
3.端口映射
完成端口映射需要在本地终端中执行正在启动的开发机中自定义服务的命令:
ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
-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
:关闭严格的主机密钥检查,这样可以避免第一次连接时因为未知主机密钥而产生的提示或错误。
第2关:Python 基础知识——Leetcode 383及Vscode连接InternStudio debug笔记
1.Leetcode 383
因为字符串是不可修改的对象,所以修改字符串的方法都是将修改后的字符串作为一个新对象返回,这题python用replace还是挺快的。
class Solution(object):
def canConstruct(self, ransomNote, magazine):
"""
:type ransomNote: str
:type magazine: str
:rtype: bool
"""
for char in ransomNote:
if char in magazine:
magazine=magazine.replace(char," ",1)
else:
return False
return True
Leetcode提交记录
2.Vscode连接InternStudio debug笔记
一开始没有配置好模型API,报了第一个错,在~/.bashrc中用vim编辑器加入密钥:
export api_key="自己的api token"
第二个错是因为res返回的是一个字符串,其中包含了JSON格式的数据,但是这个字符串并不是直接的JSON格式,因为它包含了额外的文本和代码标记,于是直接使用用 json.loads(res)
会失败。把{}里面的json格式取出来就好了。
from openai import OpenAI
import os
import json
def internlm_gen(prompt,client):
'''
LLM生成函数
Param prompt: prompt string
Param client: OpenAI client
'''
response = client.chat.completions.create(
model="internlm2.5-latest",
messages=[
{"role": "user", "content": prompt},
],
stream=False
)
return response.choices[0].message.content
api_key = os.getenv('api_key')
client = OpenAI(base_url="https://internlm-chat.intern-ai.org.cn/puyu/api/v1/",api_key=api_key)
content = """
书生浦语InternLM2.5是上海人工智能实验室于2024年7月推出的新一代大语言模型,提供1.8B、7B和20B三种参数版本,以适应不同需求。
该模型在复杂场景下的推理能力得到全面增强,支持1M超长上下文,能自主进行互联网搜索并整合信息。
"""
prompt = f"""
请帮我从以下``内的这段模型介绍文字中提取关于该模型的信息,要求包含模型名字、开发机构、提供参数版本、上下文长度四个内容,以json格式返回。
`{content}`
"""
res = internlm_gen(prompt,client)
if res:
# print(f"Raw response: {res}") # 打印原始响应
# 提取JSON字符串
json_str_start = res.find('{')
json_str_end = res.rfind('}') + 1
json_str = res[json_str_start:json_str_end]
try:
resjson = json.loads(json_str)
print(resjson)
except json.JSONDecodeError:
print("Failed to parse JSON: the extracted string is not a valid JSON string")
else:
print("No response received or an error occurred")
运行结果
第3关:Git 基础知识——在class分支下提交文件&Github上构建个人项目
1.在class分支下提交自我介绍文件
首先将项目fork到自己的github,注意不要勾选只有camp4分支
然后在本地拉取自己github上的对应项目
git clone https://github.com/InternLM/Tutorial.git<这里改成自己的github仓库>
ls查看当前路径下文件夹,并cd到Tutorial文件夹下
cd Tutorial/
在当前目录下查看所有分支
git branch -a
切换到class分支下
git checkout -b class origin/class
创建自己的分支
git checkout -b class_uid
进入camp4,创建自我介绍的md文件即可
touch uid.md
把md文件修改好后就可以在命令行中提交文件:
#提交到缓存区
git add .
#提交到本地仓库
git commit -m "名字(示例:add_git_camp4_uid_introduction)"
#提交到远程仓库
git push origin <前面创建的分支名字>
在自己的远程仓库找到所属分支中刚刚提交的变动,选择提交pull request就可以在原来项目的pull requests里面看到自己了~
2.Github上构建个人项目
和任务1同样的方法,先在自己的远程仓库创建好了之后,同样的方式从本地提交上去。
第4关:玩转HF/魔搭/魔乐社区——从平台上下载模型
1.HuggingFace
在github中创建Codespace,并根据指南中在文件夹下写好对应的模型下载的配置文件,逐个运行即可:
下载internlm2_5-7b-chat的配置文件
下载internlm2_5-chat-1_8b并打印示例输出
2.魔搭社区
通用github拉取模型,要注意环境的隔离
#Git模型下载
git clone https://www.modelscope.cn/<your_username>/<your_model>
3.魔乐社区
同上
# 确保安装git-lfs 保证大文件的正常下载
apt-get install git-lfs
git lfs install
# 从仓库拉取
git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git