书生大模型实战-入门岛任务

112 阅读8分钟

L0G1000 | Linux 基础知识

任务描述完成所需时间
闯关任务完成SSH连接与端口映射并运行hello_world.py10min
可选任务 1将Linux基础命令在开发机上完成一遍10min
可选任务 2使用 VSCODE 远程连接开发机并创建一个conda环境10min

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

SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。

创建开发机后,使用vscode,使用ssh连接到服务器 1.png

端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。在后续的课程中会进行模型web_demo的部署实践,那在这个过程中,很有可能遇到web ui加载不全的问题。这是因为开发机Web IDE中运行web_demo时,直接访问开发机内 http/https 服务可能会遇到代理问题,外网链接的ui资源没有被加载完全。 [VScode提供了自动端口映射的功能,不需要手动配置。]

2.png

3.png

12.png

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

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

4.png

3.用 VSCODE 远程连接开发机并创建一个conda环境

5.png

6.png

L0G2000 | Python 基础知识

任务类型任务内容预计耗时
闯关任务Leetcode 383(笔记中提交代码与leetcode提交通过截图)20mins
闯关任务Vscode连接InternStudio debug笔记10mins
可选任务pip安装到指定目录10mins

1.Leetcode 383

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        m = list(magazine)
        r = list(ransomNote)
        for i in range(0, len(m)):
            if m[i] in r:
                r.remove(m[i])
        if len(r) == 0:
            return True
        else:
            return False

7.png

2.Vscode连接InternStudio debug笔记

conda create --name myenv python=3.9
conda activate myenv
conda deactivate

#查看当前设备上所有的虚拟环境
conda env list
#查看当前环境中安装了的所有包
conda list
#删除环境(比如要删除myenv)
conda env remove myenv


pip install <somepackage> # 安装单个包,<somepackage>
pip install numpy==2.0 # 指定版本安装
pip install -r requirements.txt

    

单点调试:

11.png

在调试(Debug)过程中,断点(Breakpoint)允许程序员在程序的执行流程中设置暂停点。当程序运行到这些断点时,执行会暂时中断,使得我们可以检查此时程序的状态,包括变量的值、内存的内容等。断点为我们提供了一个观察程序运行细节的机会,从而帮助我们定位和解决程序中的错误或问题。在VSCode中,我们还可以设置条件断点,这样断点只有在满足特定条件时才会触发。

  1. 普通断点:在代码行号左侧点击,添加断点。

  2. 条件断点:在断点标记上右键,选择条件断点(conditional breakpoint)。VSCode 中常用的条件断点主要有三种类型:

    1. 表达式(Expression):输入一个 Python 表达式,每次触发断点时运行该表达式,当表达式的值为 True 时 VS Code 会暂停执行。例如:x == 10
    2. 触发计数(Hit Count):断点触发计数达到输入值时才会暂停运行。
    3. 记录日志(Log Message):触发该断点时在 Debug Console 中输出指定信息,实际上就是 logpoint。需要输入要输出的信息,如果要用到表达式,可以使用 {} 将表达式括起来。例如,每次记录变量 i 的值可以写 x={i}

以表达式(Expression)断点为例子: 12.png

13.png

输入命令python InternLM_test.py,运行报错。

13.png

debug后发现模型返回的信息,不是直接的json信息,不能直接转为json格式 需要提取出{}之间的内容,才能顺利转换。

14.png 添加剪切代码

start=res.find('{')
end=res.find('}')+1
res_str=res[start:end]

15.png

3.pip安装到指定目录


# 首先激活环境
conda activate /root/share/pre_envs/pytorch2.1.2cu12.1

# 创建一个目录/root/myenvs,并将包安装到这个目录下
mkdir -p /root/myenvs
pip install numpy --target /root/myenvs

image.png

L0G3000 | Git 基础知识

  • 添(Add)

    • 命令git add <文件名> 或 git add .
    • 作用:将修改过的文件添加到本地暂存区(Staging Area)。这一步是准备阶段,你可以选择性地添加文件,决定哪些修改应该被包括在即将进行的提交中。
  • 提(Commit)

    • 命令git commit -m '描述信息'
    • 作用:将暂存区中的更改提交到本地仓库。这一步是将你的更改正式记录下来,每次提交都应附带一个清晰的描述信息,说明这次提交的目的或所解决的问题。
  • 拉(Pull)

    • 命令git pull
    • 作用:从远程仓库拉取最新的内容到本地仓库,并自动尝试合并到当前分支。这一步是同步的重要环节,确保你的工作基于最新的项目状态进行。在多人协作中,定期拉取可以避免将来的合并冲突。
  • 推(Push)

    • 命令git push
    • 作用:将本地仓库的更改推送到远程仓库。这一步是共享你的工作成果,让团队成员看到你的贡献。
指令描述
git config配置用户信息和偏好设置
git init初始化一个新的 Git 仓库
git clone克隆一个远程仓库到本地
git status查看仓库当前的状态,显示有变更的文件
git add将文件更改添加到暂存区
git commit提交暂存区到仓库区
git branch列出、创建或删除分支
git checkout切换分支或恢复工作树文件
git merge合并两个或更多的开发历史
git pull从另一仓库获取并合并本地的版本
git push更新远程引用和相关的对象
git remote管理跟踪远程仓库的命令
git fetch从远程仓库获取数据到本地仓库,但不自动合并

任务1: 破冰活动:自我介绍

git clone https://github.com/loulan403/Tutorial.git 
#git clone git@github.com:random-zhou/Tutorial.git 
#git clone https://github.com/InternLM/Tutorial.git
cd Tutorial/
git branch -a
git checkout -b class origin/class
git checkout -b class_2596
#添加自我介绍文件#

git add .
git status
git commit -m "add git_camp4_2596_introduction"
git push origin class_2596

image.png

image.png

image.png

任务2: 实践项目:构建个人项目

github.com/loulan403/L…

L0G4000 | 玩转HF/魔搭/魔乐社区

模型下载使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensors.index.json文件),请在必要的步骤以及结果当中截图。20min
模型上传(可选)将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。10min
Space上传(可选)在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。10min

1.模型下载 安装依赖,下载internlm2_5-7b-chat的配置文件 touch hf_download_josn.py

image.png

下载internlm2_5-chat-1_8b并打印示例输出

image.png

image.png

2.模型上传 过CLI上传 Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# sudo apt-get install git-lfs # CodeSpace里面可能会有aptkey冲突且没有足够权限
git lfs install # 直接在git环境下配置git LFS
pip install huggingface_hub

git config --global credential.helper store
huggingface-cli login

image.png

创建项目

cd /workspaces/codespaces-jupyter

#intern_study_L0_4就是model_name
huggingface-cli repo create intern_study_L0_4

# 克隆到本地 your_huggingface_name 注意替换成你自己的
git clone https://huggingface.co/{your_huggingface_name}/intern_study_L0_4

#在文件夹中修改文件后可以用git提交到远程仓库
cd intern_study_L0_4
git add .
git commit -m "add:intern_study_L0_4"
git push

image.png

image.png

3.Space上传

Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 首先访问以下链接,进入Spaces。在右上角点击Create new Space进行创建。 在创建页面中,输入项目名为intern_cobuild,并选择Static应用进行创建。创建成功后会自动跳转到一个默认的HTML页面。创建好项目后,回到我们的CodeSpace,接着clone项目。

cd /workspaces/codespaces-jupyter
# 请将<your_username>替换你自己的username
git clone https://huggingface.co/spaces/<your_username>/intern_cobuild
cd /workspaces/codespaces-jupyter/intern_cobuild


git add .
git commit -m "update: colearn page"
git push

image.png