L0G1000 | Linux 基础知识
| 任务描述 | 完成所需时间 | |
|---|---|---|
| 闯关任务 | 完成SSH连接与端口映射并运行hello_world.py | 10min |
| 可选任务 1 | 将Linux基础命令在开发机上完成一遍 | 10min |
| 可选任务 2 | 使用 VSCODE 远程连接开发机并创建一个conda环境 | 10min |
任务1:完成SSH连接与端口映射并运行hello_world.py
SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。
创建开发机后,使用vscode,使用ssh连接到服务器
端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。在后续的课程中会进行模型web_demo的部署实践,那在这个过程中,很有可能遇到web ui加载不全的问题。这是因为开发机Web IDE中运行web_demo时,直接访问开发机内 http/https 服务可能会遇到代理问题,外网链接的ui资源没有被加载完全。 [VScode提供了自动端口映射的功能,不需要手动配置。]
2.将Linux基础命令在开发机上完成一遍
- 创建文件:可以使用
touch命令创建空文件。- 创建目录:使用
mkdir命令。- 目录切换:使用
cd命令。- 显示所在目录:使用
pwd命令。- 查看文件内容:如使用
cat直接显示文件全部内容,more和less可以分页查看。- 编辑文件:如
vi或vim等编辑器。- 复制文件:用
cp命令。- 创建文件链接:用
ln命令。- 移动文件:通过
mv命令。- 删除文件:使用
rm命令。- 删除目录:
rmdir(只能删除空目录)或rm -r(可删除非空目录)。- 查找文件:可以用
find命令。- 查看文件或目录的详细信息:使用
ls命令,如使用ls -l查看目录下文件的详细信息。- 处理文件:进行复杂的文件操作,可以使用
sed命令。
3.用 VSCODE 远程连接开发机并创建一个conda环境
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
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
单点调试:
在调试(Debug)过程中,断点(Breakpoint)允许程序员在程序的执行流程中设置暂停点。当程序运行到这些断点时,执行会暂时中断,使得我们可以检查此时程序的状态,包括变量的值、内存的内容等。断点为我们提供了一个观察程序运行细节的机会,从而帮助我们定位和解决程序中的错误或问题。在VSCode中,我们还可以设置条件断点,这样断点只有在满足特定条件时才会触发。
普通断点:在代码行号左侧点击,添加断点。
条件断点:在断点标记上右键,选择条件断点(conditional breakpoint)。VSCode 中常用的条件断点主要有三种类型:
- 表达式(Expression):输入一个 Python 表达式,每次触发断点时运行该表达式,当表达式的值为 True 时 VS Code 会暂停执行。例如:
x == 10- 触发计数(Hit Count):断点触发计数达到输入值时才会暂停运行。
- 记录日志(Log Message):触发该断点时在 Debug Console 中输出指定信息,实际上就是 logpoint。需要输入要输出的信息,如果要用到表达式,可以使用
{}将表达式括起来。例如,每次记录变量i的值可以写x={i}。
以表达式(Expression)断点为例子:
输入命令python InternLM_test.py,运行报错。
debug后发现模型返回的信息,不是直接的json信息,不能直接转为json格式 需要提取出{}之间的内容,才能顺利转换。
添加剪切代码
start=res.find('{')
end=res.find('}')+1
res_str=res[start:end]
3.pip安装到指定目录
# 首先激活环境
conda activate /root/share/pre_envs/pytorch2.1.2cu12.1
# 创建一个目录/root/myenvs,并将包安装到这个目录下
mkdir -p /root/myenvs
pip install numpy --target /root/myenvs
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
任务2: 实践项目:构建个人项目
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
下载internlm2_5-chat-1_8b并打印示例输出
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
创建项目
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
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