From d0d0c1a178ed5510bbc73e578439b8d4a00c0c08 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Tue, 15 Oct 2024 19:14:30 +0800 Subject: [PATCH 01/28] init --- docs/L0/maas/readme.md | 0 docs/L0/maas/task.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/L0/maas/readme.md create mode 100644 docs/L0/maas/task.md diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md new file mode 100644 index 000000000..e69de29bb From bc5dc5e8bad21848d1aef422b9aaaa21f6b2a623 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 19:50:56 +0800 Subject: [PATCH 02/28] Update readme.md update: content --- docs/L0/maas/readme.md | 446 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 446 insertions(+) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index e69de29bb..0cac697ed 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -0,0 +1,446 @@ +# 玩转HF/魔搭/魔乐社区 + +## 1. 闯关任务 + +闯关任务需要在关键步骤当中截图! + +| 任务 | 描述 | 时间 | +| --- | --- | --- | +| 模型下载 | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | +| 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | +| Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | + + +优秀作业必做可选内容 +请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! + +--- +## 2. 课程内容 +😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! +此教程旨在帮助您学习当前火热的三大AI学习社区。我们将深入探索如何充分利用 Hugging Face、魔搭社区和魔乐社区的资源和工具,学习模型下载、上传以及创建您的专属Space,玩转三大平台。无论你是初学者还是资深开发者,这些社区提供的丰富资源都将为您的项目带来无限可能,一起加油! +### 2.1 HF 平台 +### 2.1.1 注册Hugging Face 平台 +![image](https://github.com/user-attachments/assets/aab0682d-cac3-4010-8dcf-1fe66764b17c) + +注册成功之后会跳转到引导页~ + +![image](https://github.com/user-attachments/assets/215b90d2-cb86-43fc-ac6f-a4f3ba6d961d) + +#### 2.1.2 查找书生系列模型 + +首先,我们需要来到官网的模型模块,就可以看到如下页面: + +![image](https://github.com/user-attachments/assets/b119cabb-ead3-4296-b0fd-7eaedda491a0) + +- Filter: 用于筛选你想要的模型 +- 模型列表: 展示了可使用的模型。不带前缀的是官方提供的模型,例如gpt2,而带前缀的是第三方提供的模型。 +- 搜索框:你可以通过搜索框按名字搜索模型。 +比如我们搜索“internlm” 就会获得internlm下相关的模型 + +![image](https://github.com/user-attachments/assets/79b0a603-a77d-4191-a80d-0cc47448dbb6) + +这里我以internlm2_5-1_8b举例 + +![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) + +#### 2.1.3 InternLM模型下载 + +在正式下载之前,我们先要介绍一下HF的Transformers库,作为HF最核心的项目,它可以: +- 直接使用预训练模型进行推理 +- 提供了大量预训练模型可供使用 +- 使用预训练模型进行迁移学习 +因此在使用HF前,我们需要下载Transformers等一些常用依赖库 + +#### 2.1.4 GitHub CodeSpace的使用 + +```因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace``` +https://github.com/codespaces + +Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择Jupyter Notebook进行创建环境 + +![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) + +创建好环境后,按照以下依赖,便于模型运行。 + +```bash +conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y +# 安装transformers +pip install transformers==4.38 +pip install sentencepiece==0.1.99 +pip install einops==0.8.0 +pip install protobuf==5.27.2 +pip install accelerate==0.33.0 +``` + +##### 2.1.4.1 下载internlm2_5-7b-chat的配置文件 +考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 + +``` +因为CodeSpace平台上默认用户权限,不是root权限,这里为方便演示直接在工作区创建文件 +以下目录均为/workspaces/codespaces-jupyter +``` + +以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 +```touch hf_download_josn.py ``` +在这个文件中,粘贴以下代码 + +``` +import os +from huggingface_hub import hf_hub_download + +# 指定模型标识符 +repo_id = "internlm/internlm2_5-7b" + +# 指定要下载的文件列表 +files_to_download = [ + {"filename": "config.json"}, + {"filename": "model.safetensors.index.json"} +] + +# 创建一个目录来存放下载的文件 +local_dir = f"{repo_id.split('/')[1]}" +os.makedirs(local_dir, exist_ok=True) + +# 遍历文件列表并下载每个文件 +for file_info in files_to_download: + file_path = hf_hub_download( + repo_id=repo_id, + filename=file_info["filename"], + local_dir=local_dir + ) + print(f"{file_info['filename']} file downloaded to: {file_path}") +``` +运行该文件(注意文件目录) +```python hf_download_josn.py ``` +可以看到,已经从Hugging Face上下载了相应配置文件 + +![image](https://github.com/user-attachments/assets/4f0dbe4c-a82c-4cba-b6da-701c4461be20) + +那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 +如 /root/share/model_repos/internlm2-chat-7b +在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 + +##### 2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 + +那么如果我们需想要下载一个完整的模型文件怎么办呢? +创建一个python文件用于下载internlm2_5-1_8B模型并运行 +这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 + +```touch hf_download_1_8_demo.py``` +但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: + +``` +import torch +from transformers import AutoTokenizer, AutoModelForCausalLM + +tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-1_8b", trust_remote_code=True) +model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-1_8b", torch_dtype=torch.float16, trust_remote_code=True) +model = model.eval() + +inputs = tokenizer(["A beautiful flower"], return_tensors="pt") +gen_kwargs = { + "max_length": 128, + "top_p": 0.8, + "temperature": 0.8, + "do_sample": True, + "repetition_penalty": 1.0 +} + +# 以下内容可选,如果解除注释等待一段时间后可以看到模型输出 +# output = model.generate(**inputs, **gen_kwargs) +# output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True) +# print(output) +``` +等待几分钟后(跟网速有关),会在控制台返回模型生成的结果(解除注释后) + +![image](https://github.com/user-attachments/assets/77092291-c3fc-4541-8dc5-edfeee65acc0) + +这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 + +#### 2.1.5 模型上传 +- 通过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 +git lfs install +pip install huggingface_hub +``` + +使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,获取时,需要先验证email + +![image](https://github.com/user-attachments/assets/ca33b7a2-6ad5-4328-801e-470b3e0df8c9) + +验证好之后,点击create new token,创建一个类型为“Write”的token + +![image](https://github.com/user-attachments/assets/b9a1c1c2-6a31-4efa-b4dd-f387cfbfc9d1) + +``` +请复制好token后一定要存储在合适的地方,不然关闭对话框之后,就看不到了 +``` + +![image](https://github.com/user-attachments/assets/25a6c0bd-7cab-4ba2-b8f4-29ac732d877d) + +接着可以在CodeSpace里面,使用huggingface-cli login命令进行登录,这时需要输入刚刚的token + +![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) + +创建项目 +``` +#intern_study_L0_4就是model_name +huggingface-cli repo create intern_study_L0_4 + +# 克隆到本地 +git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 +``` + +克隆好之后,应该会在文件夹那边出现对应的文件夹 +![image](https://github.com/user-attachments/assets/0d451f6f-3a59-45db-85d6-ce92a1f1bb64) + +> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 + +我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: + +``` +# 书生浦语大模型实战营camp4 +- hugging face模型上传测试 +- 更多内容请访问 https://github.com/InternLM/Tutorial/tree/camp4 +``` + +现在可以用git提交到远程仓库 + +``` +git add . +git commit -m "init:intern_study_L0_4" +git push +``` + +``` +注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 +``` +``` +git remote set-url origin https://:@huggingface.co/ +# 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 +# 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token +git pull origin +``` +现在可以在Hugging Face的个人profile里面看到这个model,也可以直接输入Url到网址栏上 +``` +https://huggingface.co//intern_study_L0_4 +``` +![image](https://github.com/user-attachments/assets/ff2dfc31-4e18-4eb7-bb6b-aa875006cfb8) + +- 通过平台直接创建 + +![image](https://github.com/user-attachments/assets/9dee50cd-e0b9-4948-a91a-0012d77d1f3b) + +创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 +![image](https://github.com/user-attachments/assets/05c63128-40d3-4b80-95fd-56c76f34a872) +> PS:熟悉Git工作流后当然还是Git 命令更好用。 +#### 2.1.6 Hugging Face Spaces的使用 +Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 +首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces +![image](https://github.com/user-attachments/assets/924fa9ed-0347-4fe0-9a0d-134e5762f19e) + +选择Static应用,其他可以按自己喜好填好,然后点击Create Space即可 + +![image](https://github.com/user-attachments/assets/48f96d31-a79d-4083-8b3e-ad479701399a) + +然后就得到一个static 的html页面 + +![image](https://github.com/user-attachments/assets/f1e405a4-e0ff-48c9-a631-013aaeb0f2a6) + +我们可以进入files,然后clone项目进我们的CodeSpace + +![image](https://github.com/user-attachments/assets/3d7607a8-c183-44fa-897a-55ef66fb018e) + +克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 + +``` +cd /workspaces/codespaces-jupyter/intern_cobuild +``` +修改我们的html代码 +``` + + + + + + My static Space + + + + + + +``` +保存后就可以push到远程仓库上了,它会自动更新页面。 + +``` +git add. +git commit -m "update: colearn page" +git push +``` + +``` +如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. +请再次设置这个项目的验证 +git remote set-url origin https://:@huggingface.co/ +例如: +git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ +然后再次git push即可 +``` + +再次进入Space界面,就可以看到我们实战营的共建活动捏~ + +![image](https://github.com/user-attachments/assets/4b6d4417-4a0e-43d0-a67a-28648935ac3b) + + +### 2.2 魔搭社区平台 +ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。 + +注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) + +![image](https://github.com/user-attachments/assets/f8b3399f-4700-4d99-a346-0e71c5f23fc8) + +我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型 + +![image](https://github.com/user-attachments/assets/1065e36c-0e11-4526-b8ab-bce0774eff96) + +#### 2.2.1 创建开发机 +我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 +![image](https://github.com/user-attachments/assets/cc81af53-1c5d-4e9a-9459-716d78a5c123) + +创建好开发机后,进入开发机 + +![image](https://github.com/user-attachments/assets/6274b5c4-a4a5-4dc3-9eee-65b562cd40ca) + +在开发机界面的左上角处,选择使用vscode进行编辑代码 + + +![image](https://github.com/user-attachments/assets/267a7478-1be7-493f-8d64-1424b6aa88a5) +新建终端后,在vscode下方出现终端,我们可以输入命令进行操作 + + +![image](https://github.com/user-attachments/assets/dd40dcca-8af8-469f-ab28-dc573a92797b) + +接着在终端后面可以输入命令了,这里可以直接粘贴以下命令 +``` +最好一行一行粘贴等每个命令跑完之后再粘贴下一行 +``` + +#### 2.2.2 环境配置 +为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 + +``` +# 激活环境 +conda activate /root/share/pre_envs/pytorch2.1.2cu12.1 + +# 安装 modelscope +pip install modelscope -t /root/env/maas +pip install numpy==1.26.0 -t /root/env/maas +pip install packaging -t /root/env/maas +``` + +注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path +如果不改变终端,导出一次就够了 +``` +export PATH=$PATH:/root/env/maas/bin +export PYTHONPATH=/root/env/maas:$PYTHONPATH +``` +接着创建我们的demo目录 + +``` +mkdir -p /root/ms_demo +# 创建好ms_model_download.py 备用 +touch /root/hf_demo/ms_model_download.py +``` + +#### 2.2.3 下载指定多个文件 +- internlm2_5-7b-chat +考虑到7B的模型文件比较大,这里我们先采用modelscope的cli工具(当然hugging face也有)来下载指定文件,在命令行输入以下命令 + +``` +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +``` + +刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件。 +- internlm2_5-1_8b-chat + +``` +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +``` + +#### 2.2.4 上传模型 +魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。 + +![image](https://github.com/user-attachments/assets/31034227-ef8d-48f4-a859-520ca568dcbb) + +那么当上传正常的模型文件后,审核一般就会通过了。 + +![image](https://github.com/user-attachments/assets/3711b4c2-69e5-4a7d-844f-b22190620f19) + +上传文件的方法可以直接通过平台添加文件,也可以用以下方法 + +![image](https://github.com/user-attachments/assets/cc300e62-515b-4709-af13-5b049e4a7cdd) + + +### 2.3 魔乐社区平台 + +魔乐社区(Modelers)是一个提供多样化、开源模型的平台,旨在促进开发者和研究人员在最先进的模型和流行应用上进行协作。 + +#### 2.3.1 下载internlm2_5-chat-1_8b模型 + +> 这里我们可以继续使用我们刚刚创建的InterStudio开发机 + +``` +cd / +mkdir ml_demo +cd ml_demo +``` + +然后我们可以下载该模型,这里 + +``` +# 确保安装git-lfs 保证大文件的正常下载 +git lfs install +# clone 仓库 +git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git +``` + +刷新一下文件夹,即可在ml_demo中找到下载好的模型文件,在魔乐社区中,还推荐了一个新的深度学习开发套件[openMind Library](https://modelers.cn/docs/zh/openmind-library/overview.html),除了常用的Transforms的API,也可以探索如何使用openMind来加载模型 + +``` +# 确保按指南安装好openmind后 +from openmind import AutoModel +model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_code=True") +``` + +>openMind Library是一个深度学习开发套件,通过简单易用的API支持模型预训练、微调、推理等流程。 +>openMind Library通过一套接口兼容PyTorch和MindSpore等主流框架,同时原生支持昇腾NPU处理器。 + +#### 2.3.2 上传模型 +在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考[上传文件 | 魔乐社区](https://modelers.cn/docs/zh/openmind-hub-client/basic_tutorial/upload.html) From 635548dec7d8ce70c0c8c358e38fa9ad797c03fd Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 19:51:55 +0800 Subject: [PATCH 03/28] Update task.md update: content --- docs/L0/maas/task.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md index e69de29bb..dc7efe1f2 100644 --- a/docs/L0/maas/task.md +++ b/docs/L0/maas/task.md @@ -0,0 +1,13 @@ +# 闯关任务 + +闯关任务需要在关键步骤当中截图! + +| 任务 | 描述 | 时间 | +| --- | --- | --- | +| 模型下载 | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | +| 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | +| Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | + + +优秀作业必做可选内容 +请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! From 84fb93305012b4a728ccd6950c547220ccd41747 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 19:57:06 +0800 Subject: [PATCH 04/28] Update readme.md update : commit space --- docs/L0/maas/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 0cac697ed..ab355ebed 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -14,6 +14,8 @@ 优秀作业必做可选内容 请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! +提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd + --- ## 2. 课程内容 😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! From 7136573ddd29c194b1330ba7729d707bfa7f9798 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 19:57:32 +0800 Subject: [PATCH 05/28] Update task.md update: commit space --- docs/L0/maas/task.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md index dc7efe1f2..c03cbcabf 100644 --- a/docs/L0/maas/task.md +++ b/docs/L0/maas/task.md @@ -11,3 +11,5 @@ 优秀作业必做可选内容 请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! + +提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd From 86554a4452d38cc5501be78605687cfd9dcb0b95 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 20:03:35 +0800 Subject: [PATCH 06/28] Update readme.md update: photo --- docs/L0/maas/readme.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index ab355ebed..c280c3e54 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -1,5 +1,7 @@ # 玩转HF/魔搭/魔乐社区 +img_v3_02fm_1cdd62bb-61dc-490f-8720-97f70ce4455g + ## 1. 闯关任务 闯关任务需要在关键步骤当中截图! @@ -86,7 +88,7 @@ pip install accelerate==0.33.0 ```touch hf_download_josn.py ``` 在这个文件中,粘贴以下代码 -``` +```python import os from huggingface_hub import hf_hub_download @@ -131,7 +133,7 @@ for file_info in files_to_download: ```touch hf_download_1_8_demo.py``` 但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: -``` +```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM @@ -163,7 +165,7 @@ gen_kwargs = { - 通过CLI上传 Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。 -``` +```bash curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs git lfs install @@ -189,7 +191,7 @@ pip install huggingface_hub ![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) 创建项目 -``` +```bash #intern_study_L0_4就是model_name huggingface-cli repo create intern_study_L0_4 @@ -212,7 +214,7 @@ git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 现在可以用git提交到远程仓库 -``` +```bash git add . git commit -m "init:intern_study_L0_4" git push @@ -221,7 +223,7 @@ git push ``` 注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 ``` -``` +```bash git remote set-url origin https://:@huggingface.co/ # 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 # 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token @@ -263,7 +265,7 @@ Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于 cd /workspaces/codespaces-jupyter/intern_cobuild ``` 修改我们的html代码 -``` +```html @@ -295,7 +297,7 @@ cd /workspaces/codespaces-jupyter/intern_cobuild ``` 保存后就可以push到远程仓库上了,它会自动更新页面。 -``` +```bash git add. git commit -m "update: colearn page" git push @@ -351,7 +353,7 @@ ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的 #### 2.2.2 环境配置 为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 -``` +```python # 激活环境 conda activate /root/share/pre_envs/pytorch2.1.2cu12.1 @@ -363,13 +365,13 @@ pip install packaging -t /root/env/maas 注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path 如果不改变终端,导出一次就够了 -``` +```bash export PATH=$PATH:/root/env/maas/bin export PYTHONPATH=/root/env/maas:$PYTHONPATH ``` 接着创建我们的demo目录 -``` +```bash mkdir -p /root/ms_demo # 创建好ms_model_download.py 备用 touch /root/hf_demo/ms_model_download.py @@ -379,7 +381,7 @@ touch /root/hf_demo/ms_model_download.py - internlm2_5-7b-chat 考虑到7B的模型文件比较大,这里我们先采用modelscope的cli工具(当然hugging face也有)来下载指定文件,在命令行输入以下命令 -``` +```bash modelscope download \ --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \ tokenizer.json config.json model.safetensors.index.json \ @@ -389,7 +391,7 @@ modelscope download \ 刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件。 - internlm2_5-1_8b-chat -``` +```bash modelscope download \ --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \ tokenizer.json config.json model.safetensors.index.json \ @@ -435,7 +437,7 @@ git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git 刷新一下文件夹,即可在ml_demo中找到下载好的模型文件,在魔乐社区中,还推荐了一个新的深度学习开发套件[openMind Library](https://modelers.cn/docs/zh/openmind-library/overview.html),除了常用的Transforms的API,也可以探索如何使用openMind来加载模型 -``` +```python # 确保按指南安装好openmind后 from openmind import AutoModel model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_code=True") From 6ceb9e41a2af3664b31e631603e65e3d3d78bf41 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 20:10:04 +0800 Subject: [PATCH 07/28] Update task.md update : model download url --- docs/L0/maas/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md index c03cbcabf..c2cdc80b0 100644 --- a/docs/L0/maas/task.md +++ b/docs/L0/maas/task.md @@ -4,7 +4,7 @@ | 任务 | 描述 | 时间 | | --- | --- | --- | -| 模型下载 | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | +| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | | 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | | Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | From 02491166a149ebd1933b02cdf2678ec3f42372c5 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 20:12:06 +0800 Subject: [PATCH 08/28] Update readme.md update: task link --- docs/L0/maas/readme.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index c280c3e54..3775f47bb 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -4,19 +4,7 @@ ## 1. 闯关任务 -闯关任务需要在关键步骤当中截图! - -| 任务 | 描述 | 时间 | -| --- | --- | --- | -| 模型下载 | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | -| 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | -| Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | - - -优秀作业必做可选内容 -请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! - -提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd +**[闯关任务](./task.md)需要在关键步骤当中截图!** --- ## 2. 课程内容 From e364837d1af9ff1470d06a3c98d71bf80cc96559 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Tue, 15 Oct 2024 20:14:57 +0800 Subject: [PATCH 09/28] Update readme.md update: 6 --- docs/L0/maas/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 3775f47bb..20d2084b3 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -4,7 +4,7 @@ ## 1. 闯关任务 -**[闯关任务](./task.md)需要在关键步骤当中截图!** +**😀Hello大家好,这节课为大家带来“玩转HF/魔搭/魔乐社区”的课程,课程任务请访问[闯关任务](./task.md)** --- ## 2. 课程内容 From c36b69e9cf009a1eda1e30e8b99aa1fd941e960a Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:51:55 +0800 Subject: [PATCH 10/28] Update readme.md fix: ms_demo_dir --- docs/L0/maas/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 20d2084b3..fad5f2377 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -362,7 +362,7 @@ export PYTHONPATH=/root/env/maas:$PYTHONPATH ```bash mkdir -p /root/ms_demo # 创建好ms_model_download.py 备用 -touch /root/hf_demo/ms_model_download.py +touch /root/ms_demo/ms_model_download.py ``` #### 2.2.3 下载指定多个文件 From b821b7448298b0668b5d33f4a9487b842a184d85 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Wed, 16 Oct 2024 13:35:37 +0800 Subject: [PATCH 11/28] optim:delete unrelated code --- docs/L0/maas/readme.md | 294 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 294 insertions(+) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index e69de29bb..68550d9f4 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -0,0 +1,294 @@ +# 玩转HF/魔搭/魔乐社区 +1. 闯关任务 +闯关任务需要在关键步骤当中截图! +模型下载 +使用Hugging Face 平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 +20min +模型上传(可选) +将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 +10min +Space上传(可选) +在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 + +10min +优秀作业必做可选内容 +请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! + +--- +2. 课程内容 +😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! +此教程旨在帮助您学习当前火热的三大AI学习社区。我们将深入探索如何充分利用 Hugging Face、魔搭社区和魔乐社区的资源和工具,学习模型下载、上传以及创建您的专属Space,玩转三大平台。无论你是初学者还是资深开发者,这些社区提供的丰富资源都将为您的项目带来无限可能,一起加油! +2.1 HF 平台 +2.1.1 注册Hugging Face 平台 +[图片] +注册成功之后会跳转到引导页~ +[图片] +2.1.2 查找书生系列模型 +首先,我们需要来到官网的模型模块,就可以看到如下页面: +[图片] +- Filter: 用于筛选你想要的模型 +- 模型列表: 展示了可使用的模型。不带前缀的是官方提供的模型,例如gpt2,而带前缀的是第三方提供的模型。 +- 搜索框:你可以通过搜索框按名字搜索模型。 +比如我们搜索“internlm” 就会获得internlm下相关的模型 +[图片] +这里我以internlm2_5-1_8b举例 +[图片] +2.1.3 InternLM模型下载 +在正式下载之前,我们先要介绍一下HF的Transformers库,作为HF最核心的项目,它可以: +- 直接使用预训练模型进行推理 +- 提供了大量预训练模型可供使用 +- 使用预训练模型进行迁移学习 +因此在使用HF前,我们需要下载Transformers等一些常用依赖库 +2.1.4 GitHub CodeSpace的使用 +因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace +https://github.com/codespaces +Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择Jupyter Notebook进行创建环境 +[图片] +创建好环境后,按照以下依赖,便于模型运行。 +conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y +# 安装transformers +pip install transformers==4.38 +pip install sentencepiece==0.1.99 +pip install einops==0.8.0 +pip install protobuf==5.27.2 +pip install accelerate==0.33.0 +2.1.4.1 下载internlm2_5-7b-chat的配置文件 +考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 +因为CodeSpace平台上默认用户权限,不是root权限,这里为方便演示直接在工作区创建文件 +以下目录均为/workspaces/codespaces-jupyter +以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 +touch hf_download_josn.py +在这个文件中,粘贴以下代码 +import os +from huggingface_hub import hf_hub_download + +# 指定模型标识符 +repo_id = "internlm/internlm2_5-7b" + +# 指定要下载的文件列表 +files_to_download = [ + {"filename": "config.json"}, + {"filename": "model.safetensors.index.json"} +] + +# 创建一个目录来存放下载的文件 +local_dir = f"{repo_id.split('/')[1]}" +os.makedirs(local_dir, exist_ok=True) + +# 遍历文件列表并下载每个文件 +for file_info in files_to_download: + file_path = hf_hub_download( + repo_id=repo_id, + filename=file_info["filename"], + local_dir=local_dir + ) + print(f"{file_info['filename']} file downloaded to: {file_path}") +运行该文件(注意文件目录) +python hf_download_josn.py +可以看到,已经从Hugging Face上下载了相应配置文件 +[图片] +那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 +如 /root/share/model_repos/internlm2-chat-7b +在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 +2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 +那么如果我们需想要下载一个完整的模型文件怎么办呢? +创建一个python文件用于下载internlm2_5-1_8B模型并运行 +这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 +touch hf_download_1_8_demo.py +但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: +import torch +from transformers import AutoTokenizer, AutoModelForCausalLM + +tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-1_8b", trust_remote_code=True) +model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-1_8b", torch_dtype=torch.float16, trust_remote_code=True) +model = model.eval() + +inputs = tokenizer(["A beautiful flower"], return_tensors="pt") +gen_kwargs = { + "max_length": 128, + "top_p": 0.8, + "temperature": 0.8, + "do_sample": True, + "repetition_penalty": 1.0 +} + +# 以下内容可选,如果解除注释等待一段时间后可以看到模型输出 +# output = model.generate(**inputs, **gen_kwargs) +# output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True) +# print(output) +# 运行python 文件 +python hf_download_1_8_demo.py +等待几分钟后(跟网速有关),会在控制台返回模型生成的结果(解除注释后) +[图片] +这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 +2.1.5 模型上传 +- 通过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 +git lfs install +pip install huggingface_hub +使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,获取时,需要先验证email +[图片] +验证好之后,点击create new token,创建一个类型为“Write”的token +[图片] +请复制好token后一定要存储在合适的地方,不然关闭对话框之后,就看不到了 +[图片] +接着可以在CodeSpace里面,使用huggingface-cli login命令进行登录,这时需要输入刚刚的token +[图片] +创建项目 +#intern_study_L0_4就是model_name +huggingface-cli repo create intern_study_L0_4 + +# 克隆到本地 +git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 +克隆好之后,应该会在文件夹那边出现对应的文件夹 +[图片] +使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 +我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: +# 书生浦语大模型实战营camp4 +- hugging face模型上传测试 +- 更多内容请访问 https://github.com/InternLM/Tutorial/tree/camp4 +现在可以用git提交到远程仓库 +git add . +git commit -m "init:intern_study_L0_4" +git push +注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 +git remote set-url origin https://:@huggingface.co/ +# 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 +# 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token +git pull origin +现在可以在Hugging Face的个人profile里面看到这个model,也可以直接输入Url到网址栏上 +https://huggingface.co//intern_study_L0_4 +[图片] +- 通过平台直接创建 +[图片] +创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 +[图片] +PS:熟悉Git工作流后当然还是Git 命令更好用。 +2.1.6 Hugging Face Spaces的使用 +Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 +首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces +[图片] +选择Static应用,其他可以按自己喜好填好,然后点击Create Space即可 +[图片] +然后就得到一个static 的html页面 +[图片] +我们可以进入files,然后clone项目进我们的CodeSpace +[图片] +克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 +cd /workspaces/codespaces-jupyter/intern_cobuild +修改我们的html代码 + + + + + + My static Space + + + + + + +保存后就可以push到远程仓库上了,它会自动更新页面。 +git add. +git commit -m "update: colearn page" +git push +如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. +请再次设置这个项目的验证 +git remote set-url origin https://:@huggingface.co/ +例如: +git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ +然后再次git push即可 +再次进入Space界面,就可以看到我们实战营的共建活动捏~ +[图片] +2.2 魔搭社区平台 +ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。 +注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) +[图片] +我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型 +[图片] +2.2.1 创建开发机 +我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 +[图片] +创建好开发机后,进入开发机 +[图片] +在开发机界面的左上角处,选择使用vscode进行编辑代码 +[图片] +新建终端后,在vscode下方出现终端,我们可以输入命令进行操作 +[图片] +接着在终端后面可以输入命令了,这里可以直接粘贴以下命令 +最好一行一行粘贴等每个命令跑完之后再粘贴下一行 +2.2.2 环境配置 +为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 +# 激活环境 +conda activate /root/share/pre_envs/pytorch2.1.2cu12.1 + +# 安装 modelscope +pip install modelscope -t /root/env/maas +pip install numpy==1.26.0 -t /root/env/maas +pip install packaging -t /root/env/maas +注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path +如果不改变终端,导出一次就够了 +export PATH=$PATH:/root/env/maas/bin +export PYTHONPATH=/root/env/maas:$PYTHONPATH +接着创建我们的demo目录 +mkdir -p /root/ms_demo +# 创建好ms_model_download.py 备用 +touch /root/hf_demo/ms_model_download.py +2.2.3 下载指定多个文件 +- internlm2_5-7b-chat +考虑到7B的模型文件比较大,这里我们先采用modelscope的cli工具(当然hugging face也有)来下载指定文件,在命令行输入以下命令 +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件。 +- internlm2_5-1_8b-chat +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +2.2.4 上传模型 +魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。 +[图片] +那么当上传正常的模型文件后,审核一般就会通过了。 +[图片] +上传文件的方法可以直接通过平台添加文件,也可以用以下方法 +[图片] +2.3 魔乐社区平台 +魔乐社区(Modelers)是一个提供多样化、开源模型的平台,旨在促进开发者和研究人员在最先进的模型和流行应用上进行协作。 +2.3.1 下载internlm2_5-chat-1_8b模型 +这里我们可以继续使用我们刚刚创建的InterStudio开发机 +cd / +mkdir ml_demo +cd ml_demo +然后我们可以下载该模型,这里 +# 确保安装git-lfs 保证大文件的正常下载 +git lfs install +# clone 仓库 +git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git +刷新一下文件夹,即可在ml_demo中找到下载好的模型文件,在魔乐社区中,还推荐了一个新的深度学习开发套件openMind Library,除了常用的Transforms的API,也可以探索如何使用openMind来加载模型 +# 确保按指南安装好openmind后 +from openmind import AutoModel +model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_code=True") +openMind Library是一个深度学习开发套件,通过简单易用的API支持模型预训练、微调、推理等流程。openMind Library通过一套接口兼容PyTorch和MindSpore等主流框架,同时原生支持昇腾NPU处理器。 +2.3.2 上传模型 +在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考上传文件 | 魔乐社区 From 0a75b09c9b8a5741246a190cf0c6d81738fc8ff4 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Wed, 16 Oct 2024 13:38:03 +0800 Subject: [PATCH 12/28] optim: delete unrelated code --- docs/L0/maas/readme.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 87401d289..ff6884118 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -361,8 +361,6 @@ export PYTHONPATH=/root/env/maas:$PYTHONPATH ```bash mkdir -p /root/ms_demo -# 创建好ms_model_download.py 备用 -touch /root/ms_demo/ms_model_download.py ``` #### 2.2.3 下载指定多个文件 From d79f44f247a459c0864749759224196954d32097 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Wed, 16 Oct 2024 13:47:02 +0800 Subject: [PATCH 13/28] init --- docs/L1/LlamaIndex/easy readme.md | 0 docs/L1/LlamaIndex/readme.md | 376 ++++++++++++++++++++++++++++++ docs/L1/LlamaIndex/task.md | 0 3 files changed, 376 insertions(+) create mode 100644 docs/L1/LlamaIndex/easy readme.md create mode 100644 docs/L1/LlamaIndex/readme.md create mode 100644 docs/L1/LlamaIndex/task.md diff --git a/docs/L1/LlamaIndex/easy readme.md b/docs/L1/LlamaIndex/easy readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md new file mode 100644 index 000000000..270384e92 --- /dev/null +++ b/docs/L1/LlamaIndex/readme.md @@ -0,0 +1,376 @@ +# llamaindex+Internlm2 RAG 实践 + +本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B(以 InternStudio 的环境为例) + +- 前置知识 +- 环境、模型准备 +- LlamaIndex HuggingFaceLLM +- LlamaIndex RAG + +## 1. 前置知识 + +正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 +给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。 +第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考[InternLM2](https://arxiv.org/abs/2403.17297)技术报告。第二种方式,并不改变模型的权重,只是给模型引入格外的信息。类比人类编程的过程,第一种方式相当于你记住了某个函数的用法,第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。 +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/5a72331f-1726-4e4e-9a69-75141cfd313e) +对比两种注入知识方式,第二种更容易实现。RAG 正是这种方式。它能够让基础模型实现非参数知识更新,无需训练就可以掌握新领域的知识。本次课程选用了 LlamaIndex 框架。LlamaIndex 是一个上下文增强的 LLM 框架,旨在通过将其与特定上下文数据集集成,增强大型语言模型(LLMs)的能力。它允许您构建应用程序,既利用 LLMs 的优势,又融入您的私有或领域特定信息。 + +### RAG 效果比对 + +如图所示,由于`xtuner`是一款比较新的框架, `InternLM2-Chat-1.8B` 训练数据库中并没有收录到它的相关信息。左图中问答均未给出准确的答案。右图未对 `InternLM2-Chat-1.8B` 进行任何增训的情况下,通过 RAG 技术实现的新增知识问答。 +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/3785a449-770a-45e1-a7ea-7cfd33a00076) + +## 2. 环境、模型准备 + +### 2.1 配置基础环境 + +这里以在 [Intern Studio](https://studio.intern-ai.org.cn/) 服务器上部署 LlamaIndex 为例。 + +首先,打开 `Intern Studio` 界面,点击 **创建开发机** 配置开发机系统。 +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/e325d0c1-6816-4ea5-ba4a-f509bdd42323) + +填写 `开发机名称` 后,点击 选择镜像 使用 `Cuda11.7-conda` 镜像,然后在资源配置中,使用 `30% A100 * 1` 的选项,然后立即创建开发机器。 +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/8c25b923-fda8-4af2-a4dc-2f4cf44845c9) + +点击 `进入开发机` 选项。 +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/6bc3cde2-6309-4e14-9278-a65cd74d4a3a) + +进入开发机后,创建新的 conda 环境,命名为 `llamaindex`,在命令行模式下运行: + +```bash +conda create -n llamaindex python=3.10 +``` + +复制完成后,在本地查看环境。 + +```bash +conda env list +``` + +结果如下所示。 + +```bash +# conda environments: +# +base * /root/.conda +llamaindex /root/.conda/envs/llamaindex +``` + +运行 `conda` 命令,激活 `llamaindex` 然后安装相关基础依赖 +**python** 虚拟环境: + +```bash +conda activate llamaindex +conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia +``` + +**安装 python 依赖包** + +```bash +pip install einops==0.7.0 protobuf==5.26.1 +``` + +环境激活后,命令行左边会显示当前(也就是 `llamaindex` )的环境名称,如下图所示: +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/bcfedc90-0d9d-4679-b1e9-4709b05711f3) + +### 2.2 安装 Llamaindex + +安装 Llamaindex 和相关的包 + +```bash +conda activate llamaindex +pip install llama-index==0.10.38 llama-index-llms-huggingface==0.2.0 "transformers[torch]==4.41.1" "huggingface_hub[inference]==0.23.1" huggingface_hub==0.23.1 sentence-transformers==2.7.0 sentencepiece==0.2.0 +``` + +### 2.3 下载 Sentence Transformer 模型 + +源词向量模型 [Sentence Transformer](https://huggingface.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2):(我们也可以选用别的开源词向量模型来进行 Embedding,目前选用这个模型是相对轻量、支持中文且效果较好的,同学们可以自由尝试别的开源词向量模型) +运行以下指令,新建一个 python 文件 + +```bash +cd ~ +mkdir llamaindex_demo +mkdir model +cd ~/llamaindex_demo +touch download_hf.py +``` + +打开`download_hf.py` 贴入以下代码 + +```bash +import os + +# 设置环境变量 +os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' + +# 下载模型 +os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/model/sentence-transformer') +``` + +然后,在 /root/llamaindex_demo 目录下执行该脚本即可自动开始下载: + +```bash +cd /root/llamaindex_demo +conda activate llamaindex +python download_hf.py +``` + +更多关于镜像使用可以移步至 [HF Mirror](https://hf-mirror.com/) 查看。 + +### 2.4 下载 NLTK 相关资源 + +我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 `nltk` 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。 +我们用以下命令下载 nltk 资源并解压到服务器上: + +```bash +cd /root +git clone https://gitee.com/yzy0612/nltk_data.git --branch gh-pages +cd nltk_data +mv packages/* ./ +cd tokenizers +unzip punkt.zip +cd ../taggers +unzip averaged_perceptron_tagger.zip +``` + +之后使用时服务器即会自动使用已有资源,无需再次下载 + +## 3. LlamaIndex HuggingFaceLLM + +运行以下指令,把 `InternLM2 1.8B` 软连接出来 + +```bash +cd ~/model +ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/ ./ +``` + +运行以下指令,新建一个 python 文件 + +```bash +cd ~/llamaindex_demo +touch llamaindex_internlm.py +``` + +打开 llamaindex_internlm.py 贴入以下代码 + +```python +from llama_index.llms.huggingface import HuggingFaceLLM +from llama_index.core.llms import ChatMessage +llm = HuggingFaceLLM( + model_name="/root/model/internlm2-chat-1_8b", + tokenizer_name="/root/model/internlm2-chat-1_8b", + model_kwargs={"trust_remote_code":True}, + tokenizer_kwargs={"trust_remote_code":True} +) + +rsp = llm.chat(messages=[ChatMessage(content="xtuner是什么?")]) +print(rsp) +``` + +之后运行 + +```bash +conda activate llamaindex +cd ~/llamaindex_demo/ +python llamaindex_internlm.py +``` + +结果为: +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/ac3f481d-cc5b-44be-b281-2cab7289f027) +回答的效果并不好,并不是我们想要的 xtuner。 + +## 4. LlamaIndex RAG + +安装 `LlamaIndex` 词嵌入向量依赖 + +```bash +conda activate llamaindex +pip install llama-index-embeddings-huggingface==0.2.0 llama-index-embeddings-instructor==0.1.3 +``` + +运行以下命令,获取知识库 + +```bash +cd ~/llamaindex_demo +mkdir data +cd data +git clone https://github.com/InternLM/xtuner.git +mv xtuner/README_zh-CN.md ./ +``` + +运行以下指令,新建一个 python 文件 + +```bash +cd ~/llamaindex_demo +touch llamaindex_RAG.py +``` + +打开`llamaindex_RAG.py`贴入以下代码 + +```python + +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings + +from llama_index.embeddings.huggingface import HuggingFaceEmbedding +from llama_index.llms.huggingface import HuggingFaceLLM + +#初始化一个HuggingFaceEmbedding对象,用于将文本转换为向量表示 +embed_model = HuggingFaceEmbedding( +#指定了一个预训练的sentence-transformer模型的路径 + model_name="/root/model/sentence-transformer" +) +#将创建的嵌入模型赋值给全局设置的embed_model属性, +#这样在后续的索引构建过程中就会使用这个模型。 +Settings.embed_model = embed_model + +llm = HuggingFaceLLM( + model_name="/root/model/internlm2-chat-1_8b", + tokenizer_name="/root/model/internlm2-chat-1_8b", + model_kwargs={"trust_remote_code":True}, + tokenizer_kwargs={"trust_remote_code":True} +) +#设置全局的llm属性,这样在索引查询时会使用这个模型。 +Settings.llm = llm + +#从指定目录读取所有文档,并加载数据到内存中 +documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data() +#创建一个VectorStoreIndex,并使用之前加载的文档来构建索引。 +# 此索引将文档转换为向量,并存储这些向量以便于快速检索。 +index = VectorStoreIndex.from_documents(documents) +# 创建一个查询引擎,这个引擎可以接收查询并返回相关文档的响应。 +query_engine = index.as_query_engine() +response = query_engine.query("xtuner是什么?") + +print(response) +``` + +之后运行 + +```bash +conda activate llamaindex +cd ~/llamaindex_demo/ +python llamaindex_RAG.py +``` + +结果为: +![image](https://github.com/Shengshenlan/tutorial/assets/57640594/8d363e3f-edf9-4573-bd58-5b54fd8981df) + +借助 RAG 技术后,就能获得我们想要的答案了。 + +## 5. LlamaIndex web + +运行之前首先安装依赖 + +```shell +pip install streamlit==1.36.0 +``` + +运行以下指令,新建一个 python 文件 + +```bash +cd ~/llamaindex_demo +touch app.py +``` + +打开`app.py`贴入以下代码 + +```python +import streamlit as st +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings +from llama_index.embeddings.huggingface import HuggingFaceEmbedding +from llama_index.llms.huggingface import HuggingFaceLLM + +st.set_page_config(page_title="llama_index_demo", page_icon="🦜🔗") +st.title("llama_index_demo") + +# 初始化模型 +@st.cache_resource +def init_models(): + embed_model = HuggingFaceEmbedding( + model_name="/root/model/sentence-transformer" + ) + Settings.embed_model = embed_model + + llm = HuggingFaceLLM( + model_name="/root/model/internlm2-chat-1_8b", + tokenizer_name="/root/model/internlm2-chat-1_8b", + model_kwargs={"trust_remote_code": True}, + tokenizer_kwargs={"trust_remote_code": True} + ) + Settings.llm = llm + + documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data() + index = VectorStoreIndex.from_documents(documents) + query_engine = index.as_query_engine() + + return query_engine + +# 检查是否需要初始化模型 +if 'query_engine' not in st.session_state: + st.session_state['query_engine'] = init_models() + +def greet2(question): + response = st.session_state['query_engine'].query(question) + return response + + +# Store LLM generated responses +if "messages" not in st.session_state.keys(): + st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}] + + # Display or clear chat messages +for message in st.session_state.messages: + with st.chat_message(message["role"]): + st.write(message["content"]) + +def clear_chat_history(): + st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}] + +st.sidebar.button('Clear Chat History', on_click=clear_chat_history) + +# Function for generating LLaMA2 response +def generate_llama_index_response(prompt_input): + return greet2(prompt_input) + +# User-provided prompt +if prompt := st.chat_input(): + st.session_state.messages.append({"role": "user", "content": prompt}) + with st.chat_message("user"): + st.write(prompt) + +# Gegenerate_llama_index_response last message is not from assistant +if st.session_state.messages[-1]["role"] != "assistant": + with st.chat_message("assistant"): + with st.spinner("Thinking..."): + response = generate_llama_index_response(prompt) + placeholder = st.empty() + placeholder.markdown(response) + message = {"role": "assistant", "content": response} + st.session_state.messages.append(message) +``` + +之后运行 + +```bash +streamlit run app.py +``` + +然后在命令行点击,红框里的 url。 + +![image](https://github.com/user-attachments/assets/dc1e0e8c-bec3-49ad-b522-44f14c64ea01) + +即可进入以下网页,然后就可以开始尝试问问题了。 + +![1721404075545](https://github.com/user-attachments/assets/1f55ae89-2568-4cd5-8e50-564ed032d275) + +询问结果为: + +![1721404159357](https://github.com/user-attachments/assets/6b479645-3bf6-4b94-b8e9-df4ea2e18530) + +## 6. 小结 + +恭喜你,成功通关本关卡!继续加油!你成功使用 LlamaIndex 运行了 InternLM-2 1.8B 模型,并实现了知识库的构建与检索。这为管理和利用大规模知识库提供了强大的工具和方法。接下来,可以进一步优化和扩展功能,以满足更复杂的需求。 + +## 7. 作业 + +作业请访问[作业](./task.md)。 diff --git a/docs/L1/LlamaIndex/task.md b/docs/L1/LlamaIndex/task.md new file mode 100644 index 000000000..e69de29bb From fb9df56541bdcb0a1ef1c0ed0b6735bd60d3cf39 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Wed, 16 Oct 2024 18:27:43 +0800 Subject: [PATCH 14/28] init:readme.md and Task.md --- docs/L1/LlamaIndex/readme.md | 7 +++++++ docs/L1/LlamaIndex/task.md | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md index 270384e92..0f4ab94f1 100644 --- a/docs/L1/LlamaIndex/readme.md +++ b/docs/L1/LlamaIndex/readme.md @@ -188,6 +188,13 @@ conda activate llamaindex pip install llama-index-embeddings-huggingface==0.2.0 llama-index-embeddings-instructor==0.1.3 ``` +```bash +在这一步请确定llama-index-embeddings-huggingface安装成功 +如果存在not found错误,请重新安装 +pip install llama-index-embeddings-huggingface==0.2.0 +确保 huggingface_hub==0.23.1 +``` + 运行以下命令,获取知识库 ```bash diff --git a/docs/L1/LlamaIndex/task.md b/docs/L1/LlamaIndex/task.md index e69de29bb..2630bcbb5 100644 --- a/docs/L1/LlamaIndex/task.md +++ b/docs/L1/LlamaIndex/task.md @@ -0,0 +1,10 @@ +# Llamaindex RAG 实践 + +## 基础任务 (完成此任务即完成闯关) + +- **任务要求**:基于 LlamaIndex 构建自己的 RAG 知识库,寻找一个问题 A 在使用 LlamaIndex 之前 InternLM2-Chat-1.8B 模型不会回答,借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力,截图保存。 + +## 闯关材料提交 (完成任务并且提交材料时为闯关成功) + +- 请将作业发布到知乎、CSDN 等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 100 算力点奖励!!! +- 提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd From 01abc786d6ef7ea9120f483b03c7ebed280845c5 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Wed, 16 Oct 2024 18:34:54 +0800 Subject: [PATCH 15/28] update:title --- docs/L1/LlamaIndex/readme.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md index 0f4ab94f1..8f03ca872 100644 --- a/docs/L1/LlamaIndex/readme.md +++ b/docs/L1/LlamaIndex/readme.md @@ -1,6 +1,6 @@ # llamaindex+Internlm2 RAG 实践 -本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B(以 InternStudio 的环境为例) +欢迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) - 前置知识 - 环境、模型准备 @@ -11,7 +11,8 @@ 正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。 -第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考[InternLM2](https://arxiv.org/abs/2403.17297)技术报告。第二种方式,并不改变模型的权重,只是给模型引入格外的信息。类比人类编程的过程,第一种方式相当于你记住了某个函数的用法,第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。 +第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考[InternLM2技术报告](https://arxiv.org/abs/2403.17297)。 +第二种方式,并不改变模型的权重,只是给模型引入格外的信息。类比人类编程的过程,第一种方式相当于你记住了某个函数的用法,第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。 ![image](https://github.com/Shengshenlan/tutorial/assets/57640594/5a72331f-1726-4e4e-9a69-75141cfd313e) 对比两种注入知识方式,第二种更容易实现。RAG 正是这种方式。它能够让基础模型实现非参数知识更新,无需训练就可以掌握新领域的知识。本次课程选用了 LlamaIndex 框架。LlamaIndex 是一个上下文增强的 LLM 框架,旨在通过将其与特定上下文数据集集成,增强大型语言模型(LLMs)的能力。它允许您构建应用程序,既利用 LLMs 的优势,又融入您的私有或领域特定信息。 From 7cb49861ce0fb9f1deb76e93e8acf0fe2a9f9275 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:36:41 +0800 Subject: [PATCH 16/28] Update readme.md --- docs/L1/LlamaIndex/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md index 8f03ca872..8e265b594 100644 --- a/docs/L1/LlamaIndex/readme.md +++ b/docs/L1/LlamaIndex/readme.md @@ -1,5 +1,7 @@ # llamaindex+Internlm2 RAG 实践 +img_v3_02fn_136796c2-1adb-429b-8c87-276fc43b483g + 欢迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) - 前置知识 From 5d52bc531a44a80bbd8317dcbe646c6d12f965ea Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Thu, 17 Oct 2024 10:56:59 +0800 Subject: [PATCH 17/28] update readme.md --- docs/L1/LlamaIndex/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md index 8e265b594..e5546f0b8 100644 --- a/docs/L1/LlamaIndex/readme.md +++ b/docs/L1/LlamaIndex/readme.md @@ -2,7 +2,7 @@ img_v3_02fn_136796c2-1adb-429b-8c87-276fc43b483g -欢迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) +😀Hello大家好,迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) - 前置知识 - 环境、模型准备 From 97960e9e9ef72bede2cb860975337a3820bfcd85 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Thu, 17 Oct 2024 11:31:09 +0800 Subject: [PATCH 18/28] add --- docs/L1/LlamaIndex/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md index e5546f0b8..2433fca44 100644 --- a/docs/L1/LlamaIndex/readme.md +++ b/docs/L1/LlamaIndex/readme.md @@ -2,7 +2,7 @@ img_v3_02fn_136796c2-1adb-429b-8c87-276fc43b483g -😀Hello大家好,迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) +Hello大家好,迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) - 前置知识 - 环境、模型准备 From e4c03e8632eefde2ad17746df09233f6493831d1 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Thu, 17 Oct 2024 12:43:46 +0800 Subject: [PATCH 19/28] delete unrelated files --- docs/L0/maas/readme.md | 436 ----------------------------------------- docs/L0/maas/task.md | 15 -- 2 files changed, 451 deletions(-) delete mode 100644 docs/L0/maas/readme.md delete mode 100644 docs/L0/maas/task.md diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md deleted file mode 100644 index ff6884118..000000000 --- a/docs/L0/maas/readme.md +++ /dev/null @@ -1,436 +0,0 @@ -# 玩转HF/魔搭/魔乐社区 - -img_v3_02fm_1cdd62bb-61dc-490f-8720-97f70ce4455g - -## 1. 闯关任务 - -**😀Hello大家好,这节课为大家带来“玩转HF/魔搭/魔乐社区”的课程,课程任务请访问[闯关任务](./task.md)** - ---- -## 2. 课程内容 -😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! -此教程旨在帮助您学习当前火热的三大AI学习社区。我们将深入探索如何充分利用 Hugging Face、魔搭社区和魔乐社区的资源和工具,学习模型下载、上传以及创建您的专属Space,玩转三大平台。无论你是初学者还是资深开发者,这些社区提供的丰富资源都将为您的项目带来无限可能,一起加油! -### 2.1 HF 平台 -### 2.1.1 注册Hugging Face 平台 -![image](https://github.com/user-attachments/assets/aab0682d-cac3-4010-8dcf-1fe66764b17c) - -注册成功之后会跳转到引导页~ - -![image](https://github.com/user-attachments/assets/215b90d2-cb86-43fc-ac6f-a4f3ba6d961d) - -#### 2.1.2 查找书生系列模型 - -首先,我们需要来到官网的模型模块,就可以看到如下页面: - -![image](https://github.com/user-attachments/assets/b119cabb-ead3-4296-b0fd-7eaedda491a0) - -- Filter: 用于筛选你想要的模型 -- 模型列表: 展示了可使用的模型。不带前缀的是官方提供的模型,例如gpt2,而带前缀的是第三方提供的模型。 -- 搜索框:你可以通过搜索框按名字搜索模型。 -比如我们搜索“internlm” 就会获得internlm下相关的模型 - -![image](https://github.com/user-attachments/assets/79b0a603-a77d-4191-a80d-0cc47448dbb6) - -这里我以internlm2_5-1_8b举例 - -![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) - -#### 2.1.3 InternLM模型下载 - -在正式下载之前,我们先要介绍一下HF的Transformers库,作为HF最核心的项目,它可以: -- 直接使用预训练模型进行推理 -- 提供了大量预训练模型可供使用 -- 使用预训练模型进行迁移学习 -因此在使用HF前,我们需要下载Transformers等一些常用依赖库 - -#### 2.1.4 GitHub CodeSpace的使用 - -```因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace``` -https://github.com/codespaces - -Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择Jupyter Notebook进行创建环境 - -![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) - -创建好环境后,按照以下依赖,便于模型运行。 - -```bash -conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y -# 安装transformers -pip install transformers==4.38 -pip install sentencepiece==0.1.99 -pip install einops==0.8.0 -pip install protobuf==5.27.2 -pip install accelerate==0.33.0 -``` - -##### 2.1.4.1 下载internlm2_5-7b-chat的配置文件 -考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 - -``` -因为CodeSpace平台上默认用户权限,不是root权限,这里为方便演示直接在工作区创建文件 -以下目录均为/workspaces/codespaces-jupyter -``` - -以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 -```touch hf_download_josn.py ``` -在这个文件中,粘贴以下代码 - -```python -import os -from huggingface_hub import hf_hub_download - -# 指定模型标识符 -repo_id = "internlm/internlm2_5-7b" - -# 指定要下载的文件列表 -files_to_download = [ - {"filename": "config.json"}, - {"filename": "model.safetensors.index.json"} -] - -# 创建一个目录来存放下载的文件 -local_dir = f"{repo_id.split('/')[1]}" -os.makedirs(local_dir, exist_ok=True) - -# 遍历文件列表并下载每个文件 -for file_info in files_to_download: - file_path = hf_hub_download( - repo_id=repo_id, - filename=file_info["filename"], - local_dir=local_dir - ) - print(f"{file_info['filename']} file downloaded to: {file_path}") -``` -运行该文件(注意文件目录) -```python hf_download_josn.py ``` -可以看到,已经从Hugging Face上下载了相应配置文件 - -![image](https://github.com/user-attachments/assets/4f0dbe4c-a82c-4cba-b6da-701c4461be20) - -那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 -如 /root/share/model_repos/internlm2-chat-7b -在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 - -##### 2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 - -那么如果我们需想要下载一个完整的模型文件怎么办呢? -创建一个python文件用于下载internlm2_5-1_8B模型并运行 -这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 - -```touch hf_download_1_8_demo.py``` -但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: - -```python -import torch -from transformers import AutoTokenizer, AutoModelForCausalLM - -tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-1_8b", trust_remote_code=True) -model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-1_8b", torch_dtype=torch.float16, trust_remote_code=True) -model = model.eval() - -inputs = tokenizer(["A beautiful flower"], return_tensors="pt") -gen_kwargs = { - "max_length": 128, - "top_p": 0.8, - "temperature": 0.8, - "do_sample": True, - "repetition_penalty": 1.0 -} - -# 以下内容可选,如果解除注释等待一段时间后可以看到模型输出 -# output = model.generate(**inputs, **gen_kwargs) -# output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True) -# print(output) -``` -等待几分钟后(跟网速有关),会在控制台返回模型生成的结果(解除注释后) - -![image](https://github.com/user-attachments/assets/77092291-c3fc-4541-8dc5-edfeee65acc0) - -这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 - -#### 2.1.5 模型上传 -- 通过CLI上传 -Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。 - -```bash -curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash -sudo apt-get install git-lfs -git lfs install -pip install huggingface_hub -``` - -使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,获取时,需要先验证email - -![image](https://github.com/user-attachments/assets/ca33b7a2-6ad5-4328-801e-470b3e0df8c9) - -验证好之后,点击create new token,创建一个类型为“Write”的token - -![image](https://github.com/user-attachments/assets/b9a1c1c2-6a31-4efa-b4dd-f387cfbfc9d1) - -``` -请复制好token后一定要存储在合适的地方,不然关闭对话框之后,就看不到了 -``` - -![image](https://github.com/user-attachments/assets/25a6c0bd-7cab-4ba2-b8f4-29ac732d877d) - -接着可以在CodeSpace里面,使用huggingface-cli login命令进行登录,这时需要输入刚刚的token - -![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) - -创建项目 -```bash -#intern_study_L0_4就是model_name -huggingface-cli repo create intern_study_L0_4 - -# 克隆到本地 -git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 -``` - -克隆好之后,应该会在文件夹那边出现对应的文件夹 -![image](https://github.com/user-attachments/assets/0d451f6f-3a59-45db-85d6-ce92a1f1bb64) - -> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 - -我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: - -``` -# 书生浦语大模型实战营camp4 -- hugging face模型上传测试 -- 更多内容请访问 https://github.com/InternLM/Tutorial/tree/camp4 -``` - -现在可以用git提交到远程仓库 - -```bash -git add . -git commit -m "init:intern_study_L0_4" -git push -``` - -``` -注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 -``` -```bash -git remote set-url origin https://:@huggingface.co/ -# 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 -# 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token -git pull origin -``` -现在可以在Hugging Face的个人profile里面看到这个model,也可以直接输入Url到网址栏上 -``` -https://huggingface.co//intern_study_L0_4 -``` -![image](https://github.com/user-attachments/assets/ff2dfc31-4e18-4eb7-bb6b-aa875006cfb8) - -- 通过平台直接创建 - -![image](https://github.com/user-attachments/assets/9dee50cd-e0b9-4948-a91a-0012d77d1f3b) - -创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 -![image](https://github.com/user-attachments/assets/05c63128-40d3-4b80-95fd-56c76f34a872) -> PS:熟悉Git工作流后当然还是Git 命令更好用。 -#### 2.1.6 Hugging Face Spaces的使用 -Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 -首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces -![image](https://github.com/user-attachments/assets/924fa9ed-0347-4fe0-9a0d-134e5762f19e) - -选择Static应用,其他可以按自己喜好填好,然后点击Create Space即可 - -![image](https://github.com/user-attachments/assets/48f96d31-a79d-4083-8b3e-ad479701399a) - -然后就得到一个static 的html页面 - -![image](https://github.com/user-attachments/assets/f1e405a4-e0ff-48c9-a631-013aaeb0f2a6) - -我们可以进入files,然后clone项目进我们的CodeSpace - -![image](https://github.com/user-attachments/assets/3d7607a8-c183-44fa-897a-55ef66fb018e) - -克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 - -``` -cd /workspaces/codespaces-jupyter/intern_cobuild -``` -修改我们的html代码 -```html - - - - - - My static Space - - - - - - -``` -保存后就可以push到远程仓库上了,它会自动更新页面。 - -```bash -git add. -git commit -m "update: colearn page" -git push -``` - -``` -如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. -请再次设置这个项目的验证 -git remote set-url origin https://:@huggingface.co/ -例如: -git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ -然后再次git push即可 -``` - -再次进入Space界面,就可以看到我们实战营的共建活动捏~ - -![image](https://github.com/user-attachments/assets/4b6d4417-4a0e-43d0-a67a-28648935ac3b) - - -### 2.2 魔搭社区平台 -ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。 - -注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) - -![image](https://github.com/user-attachments/assets/f8b3399f-4700-4d99-a346-0e71c5f23fc8) - -我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型 - -![image](https://github.com/user-attachments/assets/1065e36c-0e11-4526-b8ab-bce0774eff96) - -#### 2.2.1 创建开发机 -我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 -![image](https://github.com/user-attachments/assets/cc81af53-1c5d-4e9a-9459-716d78a5c123) - -创建好开发机后,进入开发机 - -![image](https://github.com/user-attachments/assets/6274b5c4-a4a5-4dc3-9eee-65b562cd40ca) - -在开发机界面的左上角处,选择使用vscode进行编辑代码 - - -![image](https://github.com/user-attachments/assets/267a7478-1be7-493f-8d64-1424b6aa88a5) -新建终端后,在vscode下方出现终端,我们可以输入命令进行操作 - - -![image](https://github.com/user-attachments/assets/dd40dcca-8af8-469f-ab28-dc573a92797b) - -接着在终端后面可以输入命令了,这里可以直接粘贴以下命令 -``` -最好一行一行粘贴等每个命令跑完之后再粘贴下一行 -``` - -#### 2.2.2 环境配置 -为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 - -```python -# 激活环境 -conda activate /root/share/pre_envs/pytorch2.1.2cu12.1 - -# 安装 modelscope -pip install modelscope -t /root/env/maas -pip install numpy==1.26.0 -t /root/env/maas -pip install packaging -t /root/env/maas -``` - -注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path -如果不改变终端,导出一次就够了 -```bash -export PATH=$PATH:/root/env/maas/bin -export PYTHONPATH=/root/env/maas:$PYTHONPATH -``` -接着创建我们的demo目录 - -```bash -mkdir -p /root/ms_demo -``` - -#### 2.2.3 下载指定多个文件 -- internlm2_5-7b-chat -考虑到7B的模型文件比较大,这里我们先采用modelscope的cli工具(当然hugging face也有)来下载指定文件,在命令行输入以下命令 - -```bash -modelscope download \ - --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \ - tokenizer.json config.json model.safetensors.index.json \ - --local_dir '/root/ms_demo' -``` - -刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件。 -- internlm2_5-1_8b-chat - -```bash -modelscope download \ - --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \ - tokenizer.json config.json model.safetensors.index.json \ - --local_dir '/root/ms_demo' -``` - -#### 2.2.4 上传模型 -魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。 - -![image](https://github.com/user-attachments/assets/31034227-ef8d-48f4-a859-520ca568dcbb) - -那么当上传正常的模型文件后,审核一般就会通过了。 - -![image](https://github.com/user-attachments/assets/3711b4c2-69e5-4a7d-844f-b22190620f19) - -上传文件的方法可以直接通过平台添加文件,也可以用以下方法 - -![image](https://github.com/user-attachments/assets/cc300e62-515b-4709-af13-5b049e4a7cdd) - - -### 2.3 魔乐社区平台 - -魔乐社区(Modelers)是一个提供多样化、开源模型的平台,旨在促进开发者和研究人员在最先进的模型和流行应用上进行协作。 - -#### 2.3.1 下载internlm2_5-chat-1_8b模型 - -> 这里我们可以继续使用我们刚刚创建的InterStudio开发机 - -``` -cd / -mkdir ml_demo -cd ml_demo -``` - -然后我们可以下载该模型,这里 - -``` -# 确保安装git-lfs 保证大文件的正常下载 -git lfs install -# clone 仓库 -git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git -``` - -刷新一下文件夹,即可在ml_demo中找到下载好的模型文件,在魔乐社区中,还推荐了一个新的深度学习开发套件[openMind Library](https://modelers.cn/docs/zh/openmind-library/overview.html),除了常用的Transforms的API,也可以探索如何使用openMind来加载模型 - -```python -# 确保按指南安装好openmind后 -from openmind import AutoModel -model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_code=True") -``` - ->openMind Library是一个深度学习开发套件,通过简单易用的API支持模型预训练、微调、推理等流程。 ->openMind Library通过一套接口兼容PyTorch和MindSpore等主流框架,同时原生支持昇腾NPU处理器。 - -#### 2.3.2 上传模型 -在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考[上传文件 | 魔乐社区](https://modelers.cn/docs/zh/openmind-hub-client/basic_tutorial/upload.html) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md deleted file mode 100644 index c2cdc80b0..000000000 --- a/docs/L0/maas/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# 闯关任务 - -闯关任务需要在关键步骤当中截图! - -| 任务 | 描述 | 时间 | -| --- | --- | --- | -| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | -| 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | -| Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | - - -优秀作业必做可选内容 -请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! - -提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd From 242fb4f78c87550603fddcc57c4d161822ce1bfc Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Thu, 17 Oct 2024 13:22:28 +0800 Subject: [PATCH 20/28] readme and task --- docs/L0/maas/readme.md | 434 ++++++++++++++++++++++++++++++ docs/L0/maas/task.md | 15 ++ docs/L1/LlamaIndex/easy readme.md | 0 docs/L1/LlamaIndex/readme.md | 386 -------------------------- docs/L1/LlamaIndex/task.md | 10 - 5 files changed, 449 insertions(+), 396 deletions(-) create mode 100644 docs/L0/maas/readme.md create mode 100644 docs/L0/maas/task.md delete mode 100644 docs/L1/LlamaIndex/easy readme.md delete mode 100644 docs/L1/LlamaIndex/readme.md delete mode 100644 docs/L1/LlamaIndex/task.md diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md new file mode 100644 index 000000000..3ead2a600 --- /dev/null +++ b/docs/L0/maas/readme.md @@ -0,0 +1,434 @@ +# 玩转HF/魔搭/魔乐社区 + +img_v3_02fm_1cdd62bb-61dc-490f-8720-97f70ce4455g + +## 1. 闯关任务 + +**😀Hello大家好,这节课为大家带来“玩转HF/魔搭/魔乐社区”的课程,课程任务请访问[闯关任务](./task.md)** + +--- +## 2. 课程内容 +😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! +此教程旨在帮助您学习当前火热的三大AI学习社区。我们将深入探索如何充分利用 Hugging Face、魔搭社区和魔乐社区的资源和工具,学习模型下载、上传以及创建您的专属Space,玩转三大平台。无论你是初学者还是资深开发者,这些社区提供的丰富资源都将为您的项目带来无限可能,一起加油! +### 2.1 HF 平台 +### 2.1.1 注册Hugging Face 平台 +![image](https://github.com/user-attachments/assets/aab0682d-cac3-4010-8dcf-1fe66764b17c) + +注册成功之后会跳转到引导页~ + +![image](https://github.com/user-attachments/assets/215b90d2-cb86-43fc-ac6f-a4f3ba6d961d) + +#### 2.1.2 查找书生系列模型 + +首先,我们需要来到官网的模型模块,就可以看到如下页面: + +![image](https://github.com/user-attachments/assets/b119cabb-ead3-4296-b0fd-7eaedda491a0) + +- Filter: 用于筛选你想要的模型 +- 模型列表: 展示了可使用的模型。不带前缀的是官方提供的模型,例如gpt2,而带前缀的是第三方提供的模型。 +- 搜索框:你可以通过搜索框按名字搜索模型。 +比如我们搜索“internlm” 就会获得internlm下相关的模型 + +![image](https://github.com/user-attachments/assets/79b0a603-a77d-4191-a80d-0cc47448dbb6) + +这里我以internlm2_5-1_8b举例 + +![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) + +#### 2.1.3 InternLM模型下载 + +在正式下载之前,我们先要介绍一下HF的Transformers库,作为HF最核心的项目,它可以: +- 直接使用预训练模型进行推理 +- 提供了大量预训练模型可供使用 +- 使用预训练模型进行迁移学习 +因此在使用HF前,我们需要下载Transformers等一些常用依赖库 + +#### 2.1.4 GitHub CodeSpace的使用 + +```因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace``` +https://github.com/codespaces + +Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择Jupyter Notebook进行创建环境 + +![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) + +创建好环境后,按照以下依赖,便于模型运行。 + +```bash +conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y +# 安装transformers +pip install transformers==4.38 +pip install sentencepiece==0.1.99 +pip install einops==0.8.0 +pip install protobuf==5.27.2 +pip install accelerate==0.33.0 +``` + +##### 2.1.4.1 下载internlm2_5-7b-chat的配置文件 +考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 + +``` +因为CodeSpace平台上默认用户权限,不是root权限,这里为方便演示直接在工作区创建文件 +以下目录均为/workspaces/codespaces-jupyter +``` + +以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 +```touch hf_download_josn.py ``` +在这个文件中,粘贴以下代码 + +```python +import os +from huggingface_hub import hf_hub_download + +# 指定模型标识符 +repo_id = "internlm/internlm2_5-7b" + +# 指定要下载的文件列表 +files_to_download = [ + {"filename": "config.json"}, + {"filename": "model.safetensors.index.json"} +] + +# 创建一个目录来存放下载的文件 +local_dir = f"{repo_id.split('/')[1]}" +os.makedirs(local_dir, exist_ok=True) + +# 遍历文件列表并下载每个文件 +for file_info in files_to_download: + file_path = hf_hub_download( + repo_id=repo_id, + filename=file_info["filename"], + local_dir=local_dir + ) + print(f"{file_info['filename']} file downloaded to: {file_path}") +``` +运行该文件(注意文件目录) +```python hf_download_josn.py ``` +可以看到,已经从Hugging Face上下载了相应配置文件 + +![image](https://github.com/user-attachments/assets/4f0dbe4c-a82c-4cba-b6da-701c4461be20) + +那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 +如 /root/share/model_repos/internlm2-chat-7b +在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 + +##### 2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 + +那么如果我们需想要下载一个完整的模型文件怎么办呢? +创建一个python文件用于下载internlm2_5-1_8B模型并运行 +这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 + +```touch hf_download_1_8_demo.py``` +但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: + +```python +import torch +from transformers import AutoTokenizer, AutoModelForCausalLM + +tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-1_8b", trust_remote_code=True) +model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-1_8b", torch_dtype=torch.float16, trust_remote_code=True) +model = model.eval() + +inputs = tokenizer(["A beautiful flower"], return_tensors="pt") +gen_kwargs = { + "max_length": 128, + "top_p": 0.8, + "temperature": 0.8, + "do_sample": True, + "repetition_penalty": 1.0 +} + +# 以下内容可选,如果解除注释等待一段时间后可以看到模型输出 +# output = model.generate(**inputs, **gen_kwargs) +# output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True) +# print(output) +``` +等待几分钟后(跟网速有关),会在控制台返回模型生成的结果(解除注释后) + +![image](https://github.com/user-attachments/assets/77092291-c3fc-4541-8dc5-edfeee65acc0) + +这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 + +#### 2.1.5 模型上传 +- 通过CLI上传 +Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。 + +```bash +curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash +sudo apt-get install git-lfs +git lfs install +pip install huggingface_hub +``` + +使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,获取时,需要先验证email + +![image](https://github.com/user-attachments/assets/ca33b7a2-6ad5-4328-801e-470b3e0df8c9) + +验证好之后,点击create new token,创建一个类型为“Write”的token + +![image](https://github.com/user-attachments/assets/b9a1c1c2-6a31-4efa-b4dd-f387cfbfc9d1) + +``` +请复制好token后一定要存储在合适的地方,不然关闭对话框之后,就看不到了 +``` + +![image](https://github.com/user-attachments/assets/25a6c0bd-7cab-4ba2-b8f4-29ac732d877d) + +接着可以在CodeSpace里面,使用huggingface-cli login命令进行登录,这时需要输入刚刚的token + +![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) + +创建项目 +```bash +#intern_study_L0_4就是model_name +huggingface-cli repo create intern_study_L0_4 + +# 克隆到本地 +git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 +``` + +克隆好之后,应该会在文件夹那边出现对应的文件夹 +![image](https://github.com/user-attachments/assets/0d451f6f-3a59-45db-85d6-ce92a1f1bb64) + +> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 +我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: + +``` +# 书生浦语大模型实战营camp4 +- hugging face模型上传测试 +- 更多内容请访问 https://github.com/InternLM/Tutorial/tree/camp4 +``` + +现在可以用git提交到远程仓库 + +```bash +git add . +git commit -m "init:intern_study_L0_4" +git push +``` + +``` +注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 +``` +```bash +git remote set-url origin https://:@huggingface.co/ +# 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 +# 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token +git pull origin +``` +现在可以在Hugging Face的个人profile里面看到这个model,也可以直接输入Url到网址栏上 +``` +https://huggingface.co//intern_study_L0_4 +``` +![image](https://github.com/user-attachments/assets/ff2dfc31-4e18-4eb7-bb6b-aa875006cfb8) + +- 通过平台直接创建 + +![image](https://github.com/user-attachments/assets/9dee50cd-e0b9-4948-a91a-0012d77d1f3b) + +创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 +![image](https://github.com/user-attachments/assets/05c63128-40d3-4b80-95fd-56c76f34a872) +> PS:熟悉Git工作流后当然还是Git 命令更好用。 +#### 2.1.6 Hugging Face Spaces的使用 +Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 +首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces +![image](https://github.com/user-attachments/assets/924fa9ed-0347-4fe0-9a0d-134e5762f19e) + +选择Static应用,其他可以按自己喜好填好,然后点击Create Space即可 + +![image](https://github.com/user-attachments/assets/48f96d31-a79d-4083-8b3e-ad479701399a) + +然后就得到一个static 的html页面 + +![image](https://github.com/user-attachments/assets/f1e405a4-e0ff-48c9-a631-013aaeb0f2a6) + +我们可以进入files,然后clone项目进我们的CodeSpace + +![image](https://github.com/user-attachments/assets/3d7607a8-c183-44fa-897a-55ef66fb018e) + +克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 + +``` +cd /workspaces/codespaces-jupyter/intern_cobuild +``` +修改我们的html代码 +```html + + + + + + My static Space + + + + + + +``` +保存后就可以push到远程仓库上了,它会自动更新页面。 + +```bash +git add. +git commit -m "update: colearn page" +git push +``` + +``` +如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. +请再次设置这个项目的验证 +git remote set-url origin https://:@huggingface.co/ +例如: +git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ +然后再次git push即可 +``` + +再次进入Space界面,就可以看到我们实战营的共建活动捏~ + +![image](https://github.com/user-attachments/assets/4b6d4417-4a0e-43d0-a67a-28648935ac3b) + + +### 2.2 魔搭社区平台 +ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。 + +注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) + +![image](https://github.com/user-attachments/assets/f8b3399f-4700-4d99-a346-0e71c5f23fc8) + +我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型 + +![image](https://github.com/user-attachments/assets/1065e36c-0e11-4526-b8ab-bce0774eff96) + +#### 2.2.1 创建开发机 +我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 +![image](https://github.com/user-attachments/assets/cc81af53-1c5d-4e9a-9459-716d78a5c123) + +创建好开发机后,进入开发机 + +![image](https://github.com/user-attachments/assets/6274b5c4-a4a5-4dc3-9eee-65b562cd40ca) + +在开发机界面的左上角处,选择使用vscode进行编辑代码 + + +![image](https://github.com/user-attachments/assets/267a7478-1be7-493f-8d64-1424b6aa88a5) +新建终端后,在vscode下方出现终端,我们可以输入命令进行操作 + + +![image](https://github.com/user-attachments/assets/dd40dcca-8af8-469f-ab28-dc573a92797b) + +接着在终端后面可以输入命令了,这里可以直接粘贴以下命令 +``` +最好一行一行粘贴等每个命令跑完之后再粘贴下一行 +``` + +#### 2.2.2 环境配置 +为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 + +```python +# 激活环境 +conda activate /root/share/pre_envs/pytorch2.1.2cu12.1 + +# 安装 modelscope +pip install modelscope -t /root/env/maas +pip install numpy==1.26.0 -t /root/env/maas +pip install packaging -t /root/env/maas +``` + +注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path +如果不改变终端,导出一次就够了 +```bash +export PATH=$PATH:/root/env/maas/bin +export PYTHONPATH=/root/env/maas:$PYTHONPATH +``` +接着创建我们的demo目录 + +```bash +mkdir -p /root/ms_demo +``` + +#### 2.2.3 下载指定多个文件 +- internlm2_5-7b-chat +考虑到7B的模型文件比较大,这里我们先采用modelscope的cli工具(当然hugging face也有)来下载指定文件,在命令行输入以下命令 + +```bash +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +``` + +刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件。 +- internlm2_5-1_8b-chat + +```bash +modelscope download \ + --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \ + tokenizer.json config.json model.safetensors.index.json \ + --local_dir '/root/ms_demo' +``` + +#### 2.2.4 上传模型 +魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。 + +![image](https://github.com/user-attachments/assets/31034227-ef8d-48f4-a859-520ca568dcbb) + +那么当上传正常的模型文件后,审核一般就会通过了。 + +![image](https://github.com/user-attachments/assets/3711b4c2-69e5-4a7d-844f-b22190620f19) + +上传文件的方法可以直接通过平台添加文件,也可以用以下方法 + +![image](https://github.com/user-attachments/assets/cc300e62-515b-4709-af13-5b049e4a7cdd) + + +### 2.3 魔乐社区平台 + +魔乐社区(Modelers)是一个提供多样化、开源模型的平台,旨在促进开发者和研究人员在最先进的模型和流行应用上进行协作。 + +#### 2.3.1 下载internlm2_5-chat-1_8b模型 + +> 这里我们可以继续使用我们刚刚创建的InterStudio开发机 +``` +cd / +mkdir ml_demo +cd ml_demo +``` + +然后我们可以下载该模型,这里 + +``` +# 确保安装git-lfs 保证大文件的正常下载 +git lfs install +# clone 仓库 +git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git +``` + +刷新一下文件夹,即可在ml_demo中找到下载好的模型文件,在魔乐社区中,还推荐了一个新的深度学习开发套件[openMind Library](https://modelers.cn/docs/zh/openmind-library/overview.html),除了常用的Transforms的API,也可以探索如何使用openMind来加载模型 + +```python +# 确保按指南安装好openmind后 +from openmind import AutoModel +model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_code=True") +``` + +>openMind Library是一个深度学习开发套件,通过简单易用的API支持模型预训练、微调、推理等流程。 +>openMind Library通过一套接口兼容PyTorch和MindSpore等主流框架,同时原生支持昇腾NPU处理器。 + +#### 2.3.2 上传模型 +在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考[上传文件 | 魔乐社区](https://modelers.cn/docs/zh/openmind-hub-client/basic_tutorial/upload.html) \ No newline at end of file diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md new file mode 100644 index 000000000..5d35327e8 --- /dev/null +++ b/docs/L0/maas/task.md @@ -0,0 +1,15 @@ +# 闯关任务 + +闯关任务需要在关键步骤当中截图! + +| 任务 | 描述 | 时间 | +| --- | --- | --- | +| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | +| 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | +| Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | + + +优秀作业必做可选内容 +请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! + +提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd \ No newline at end of file diff --git a/docs/L1/LlamaIndex/easy readme.md b/docs/L1/LlamaIndex/easy readme.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/L1/LlamaIndex/readme.md b/docs/L1/LlamaIndex/readme.md deleted file mode 100644 index 2433fca44..000000000 --- a/docs/L1/LlamaIndex/readme.md +++ /dev/null @@ -1,386 +0,0 @@ -# llamaindex+Internlm2 RAG 实践 - -img_v3_02fn_136796c2-1adb-429b-8c87-276fc43b483g - -Hello大家好,迎来到实战营第四期的llamaindex+Internlm2 RAG课程,本文将分为以下几个部分来介绍,如何使用 LlamaIndex 来部署 InternLM2 1.8B并测试(以 InternStudio 的环境为例) - -- 前置知识 -- 环境、模型准备 -- LlamaIndex HuggingFaceLLM -- LlamaIndex RAG - -## 1. 前置知识 - -正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 -给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。 -第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考[InternLM2技术报告](https://arxiv.org/abs/2403.17297)。 -第二种方式,并不改变模型的权重,只是给模型引入格外的信息。类比人类编程的过程,第一种方式相当于你记住了某个函数的用法,第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。 -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/5a72331f-1726-4e4e-9a69-75141cfd313e) -对比两种注入知识方式,第二种更容易实现。RAG 正是这种方式。它能够让基础模型实现非参数知识更新,无需训练就可以掌握新领域的知识。本次课程选用了 LlamaIndex 框架。LlamaIndex 是一个上下文增强的 LLM 框架,旨在通过将其与特定上下文数据集集成,增强大型语言模型(LLMs)的能力。它允许您构建应用程序,既利用 LLMs 的优势,又融入您的私有或领域特定信息。 - -### RAG 效果比对 - -如图所示,由于`xtuner`是一款比较新的框架, `InternLM2-Chat-1.8B` 训练数据库中并没有收录到它的相关信息。左图中问答均未给出准确的答案。右图未对 `InternLM2-Chat-1.8B` 进行任何增训的情况下,通过 RAG 技术实现的新增知识问答。 -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/3785a449-770a-45e1-a7ea-7cfd33a00076) - -## 2. 环境、模型准备 - -### 2.1 配置基础环境 - -这里以在 [Intern Studio](https://studio.intern-ai.org.cn/) 服务器上部署 LlamaIndex 为例。 - -首先,打开 `Intern Studio` 界面,点击 **创建开发机** 配置开发机系统。 -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/e325d0c1-6816-4ea5-ba4a-f509bdd42323) - -填写 `开发机名称` 后,点击 选择镜像 使用 `Cuda11.7-conda` 镜像,然后在资源配置中,使用 `30% A100 * 1` 的选项,然后立即创建开发机器。 -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/8c25b923-fda8-4af2-a4dc-2f4cf44845c9) - -点击 `进入开发机` 选项。 -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/6bc3cde2-6309-4e14-9278-a65cd74d4a3a) - -进入开发机后,创建新的 conda 环境,命名为 `llamaindex`,在命令行模式下运行: - -```bash -conda create -n llamaindex python=3.10 -``` - -复制完成后,在本地查看环境。 - -```bash -conda env list -``` - -结果如下所示。 - -```bash -# conda environments: -# -base * /root/.conda -llamaindex /root/.conda/envs/llamaindex -``` - -运行 `conda` 命令,激活 `llamaindex` 然后安装相关基础依赖 -**python** 虚拟环境: - -```bash -conda activate llamaindex -conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia -``` - -**安装 python 依赖包** - -```bash -pip install einops==0.7.0 protobuf==5.26.1 -``` - -环境激活后,命令行左边会显示当前(也就是 `llamaindex` )的环境名称,如下图所示: -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/bcfedc90-0d9d-4679-b1e9-4709b05711f3) - -### 2.2 安装 Llamaindex - -安装 Llamaindex 和相关的包 - -```bash -conda activate llamaindex -pip install llama-index==0.10.38 llama-index-llms-huggingface==0.2.0 "transformers[torch]==4.41.1" "huggingface_hub[inference]==0.23.1" huggingface_hub==0.23.1 sentence-transformers==2.7.0 sentencepiece==0.2.0 -``` - -### 2.3 下载 Sentence Transformer 模型 - -源词向量模型 [Sentence Transformer](https://huggingface.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2):(我们也可以选用别的开源词向量模型来进行 Embedding,目前选用这个模型是相对轻量、支持中文且效果较好的,同学们可以自由尝试别的开源词向量模型) -运行以下指令,新建一个 python 文件 - -```bash -cd ~ -mkdir llamaindex_demo -mkdir model -cd ~/llamaindex_demo -touch download_hf.py -``` - -打开`download_hf.py` 贴入以下代码 - -```bash -import os - -# 设置环境变量 -os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' - -# 下载模型 -os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/model/sentence-transformer') -``` - -然后,在 /root/llamaindex_demo 目录下执行该脚本即可自动开始下载: - -```bash -cd /root/llamaindex_demo -conda activate llamaindex -python download_hf.py -``` - -更多关于镜像使用可以移步至 [HF Mirror](https://hf-mirror.com/) 查看。 - -### 2.4 下载 NLTK 相关资源 - -我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 `nltk` 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。 -我们用以下命令下载 nltk 资源并解压到服务器上: - -```bash -cd /root -git clone https://gitee.com/yzy0612/nltk_data.git --branch gh-pages -cd nltk_data -mv packages/* ./ -cd tokenizers -unzip punkt.zip -cd ../taggers -unzip averaged_perceptron_tagger.zip -``` - -之后使用时服务器即会自动使用已有资源,无需再次下载 - -## 3. LlamaIndex HuggingFaceLLM - -运行以下指令,把 `InternLM2 1.8B` 软连接出来 - -```bash -cd ~/model -ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/ ./ -``` - -运行以下指令,新建一个 python 文件 - -```bash -cd ~/llamaindex_demo -touch llamaindex_internlm.py -``` - -打开 llamaindex_internlm.py 贴入以下代码 - -```python -from llama_index.llms.huggingface import HuggingFaceLLM -from llama_index.core.llms import ChatMessage -llm = HuggingFaceLLM( - model_name="/root/model/internlm2-chat-1_8b", - tokenizer_name="/root/model/internlm2-chat-1_8b", - model_kwargs={"trust_remote_code":True}, - tokenizer_kwargs={"trust_remote_code":True} -) - -rsp = llm.chat(messages=[ChatMessage(content="xtuner是什么?")]) -print(rsp) -``` - -之后运行 - -```bash -conda activate llamaindex -cd ~/llamaindex_demo/ -python llamaindex_internlm.py -``` - -结果为: -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/ac3f481d-cc5b-44be-b281-2cab7289f027) -回答的效果并不好,并不是我们想要的 xtuner。 - -## 4. LlamaIndex RAG - -安装 `LlamaIndex` 词嵌入向量依赖 - -```bash -conda activate llamaindex -pip install llama-index-embeddings-huggingface==0.2.0 llama-index-embeddings-instructor==0.1.3 -``` - -```bash -在这一步请确定llama-index-embeddings-huggingface安装成功 -如果存在not found错误,请重新安装 -pip install llama-index-embeddings-huggingface==0.2.0 -确保 huggingface_hub==0.23.1 -``` - -运行以下命令,获取知识库 - -```bash -cd ~/llamaindex_demo -mkdir data -cd data -git clone https://github.com/InternLM/xtuner.git -mv xtuner/README_zh-CN.md ./ -``` - -运行以下指令,新建一个 python 文件 - -```bash -cd ~/llamaindex_demo -touch llamaindex_RAG.py -``` - -打开`llamaindex_RAG.py`贴入以下代码 - -```python - -from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings - -from llama_index.embeddings.huggingface import HuggingFaceEmbedding -from llama_index.llms.huggingface import HuggingFaceLLM - -#初始化一个HuggingFaceEmbedding对象,用于将文本转换为向量表示 -embed_model = HuggingFaceEmbedding( -#指定了一个预训练的sentence-transformer模型的路径 - model_name="/root/model/sentence-transformer" -) -#将创建的嵌入模型赋值给全局设置的embed_model属性, -#这样在后续的索引构建过程中就会使用这个模型。 -Settings.embed_model = embed_model - -llm = HuggingFaceLLM( - model_name="/root/model/internlm2-chat-1_8b", - tokenizer_name="/root/model/internlm2-chat-1_8b", - model_kwargs={"trust_remote_code":True}, - tokenizer_kwargs={"trust_remote_code":True} -) -#设置全局的llm属性,这样在索引查询时会使用这个模型。 -Settings.llm = llm - -#从指定目录读取所有文档,并加载数据到内存中 -documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data() -#创建一个VectorStoreIndex,并使用之前加载的文档来构建索引。 -# 此索引将文档转换为向量,并存储这些向量以便于快速检索。 -index = VectorStoreIndex.from_documents(documents) -# 创建一个查询引擎,这个引擎可以接收查询并返回相关文档的响应。 -query_engine = index.as_query_engine() -response = query_engine.query("xtuner是什么?") - -print(response) -``` - -之后运行 - -```bash -conda activate llamaindex -cd ~/llamaindex_demo/ -python llamaindex_RAG.py -``` - -结果为: -![image](https://github.com/Shengshenlan/tutorial/assets/57640594/8d363e3f-edf9-4573-bd58-5b54fd8981df) - -借助 RAG 技术后,就能获得我们想要的答案了。 - -## 5. LlamaIndex web - -运行之前首先安装依赖 - -```shell -pip install streamlit==1.36.0 -``` - -运行以下指令,新建一个 python 文件 - -```bash -cd ~/llamaindex_demo -touch app.py -``` - -打开`app.py`贴入以下代码 - -```python -import streamlit as st -from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings -from llama_index.embeddings.huggingface import HuggingFaceEmbedding -from llama_index.llms.huggingface import HuggingFaceLLM - -st.set_page_config(page_title="llama_index_demo", page_icon="🦜🔗") -st.title("llama_index_demo") - -# 初始化模型 -@st.cache_resource -def init_models(): - embed_model = HuggingFaceEmbedding( - model_name="/root/model/sentence-transformer" - ) - Settings.embed_model = embed_model - - llm = HuggingFaceLLM( - model_name="/root/model/internlm2-chat-1_8b", - tokenizer_name="/root/model/internlm2-chat-1_8b", - model_kwargs={"trust_remote_code": True}, - tokenizer_kwargs={"trust_remote_code": True} - ) - Settings.llm = llm - - documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data() - index = VectorStoreIndex.from_documents(documents) - query_engine = index.as_query_engine() - - return query_engine - -# 检查是否需要初始化模型 -if 'query_engine' not in st.session_state: - st.session_state['query_engine'] = init_models() - -def greet2(question): - response = st.session_state['query_engine'].query(question) - return response - - -# Store LLM generated responses -if "messages" not in st.session_state.keys(): - st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}] - - # Display or clear chat messages -for message in st.session_state.messages: - with st.chat_message(message["role"]): - st.write(message["content"]) - -def clear_chat_history(): - st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}] - -st.sidebar.button('Clear Chat History', on_click=clear_chat_history) - -# Function for generating LLaMA2 response -def generate_llama_index_response(prompt_input): - return greet2(prompt_input) - -# User-provided prompt -if prompt := st.chat_input(): - st.session_state.messages.append({"role": "user", "content": prompt}) - with st.chat_message("user"): - st.write(prompt) - -# Gegenerate_llama_index_response last message is not from assistant -if st.session_state.messages[-1]["role"] != "assistant": - with st.chat_message("assistant"): - with st.spinner("Thinking..."): - response = generate_llama_index_response(prompt) - placeholder = st.empty() - placeholder.markdown(response) - message = {"role": "assistant", "content": response} - st.session_state.messages.append(message) -``` - -之后运行 - -```bash -streamlit run app.py -``` - -然后在命令行点击,红框里的 url。 - -![image](https://github.com/user-attachments/assets/dc1e0e8c-bec3-49ad-b522-44f14c64ea01) - -即可进入以下网页,然后就可以开始尝试问问题了。 - -![1721404075545](https://github.com/user-attachments/assets/1f55ae89-2568-4cd5-8e50-564ed032d275) - -询问结果为: - -![1721404159357](https://github.com/user-attachments/assets/6b479645-3bf6-4b94-b8e9-df4ea2e18530) - -## 6. 小结 - -恭喜你,成功通关本关卡!继续加油!你成功使用 LlamaIndex 运行了 InternLM-2 1.8B 模型,并实现了知识库的构建与检索。这为管理和利用大规模知识库提供了强大的工具和方法。接下来,可以进一步优化和扩展功能,以满足更复杂的需求。 - -## 7. 作业 - -作业请访问[作业](./task.md)。 diff --git a/docs/L1/LlamaIndex/task.md b/docs/L1/LlamaIndex/task.md deleted file mode 100644 index 2630bcbb5..000000000 --- a/docs/L1/LlamaIndex/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Llamaindex RAG 实践 - -## 基础任务 (完成此任务即完成闯关) - -- **任务要求**:基于 LlamaIndex 构建自己的 RAG 知识库,寻找一个问题 A 在使用 LlamaIndex 之前 InternLM2-Chat-1.8B 模型不会回答,借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力,截图保存。 - -## 闯关材料提交 (完成任务并且提交材料时为闯关成功) - -- 请将作业发布到知乎、CSDN 等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 100 算力点奖励!!! -- 提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd From 9586592d46e1bf77945e27487acee91980887e24 Mon Sep 17 00:00:00 2001 From: blankanswer <2452841017@qq.com> Date: Thu, 17 Oct 2024 16:09:02 +0800 Subject: [PATCH 21/28] optim --- docs/L0/maas/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 3ead2a600..91a7e7414 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -52,7 +52,7 @@ Github CodeSpace是Github推出的线上代码平台,提供了一系列templat ![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) -创建好环境后,按照以下依赖,便于模型运行。 +创建好环境后,在终端(terminal)安装以下依赖,便于模型运行。 ```bash conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y From c83f165bdd69804009831edbf346d4e9306b7930 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:16:06 +0800 Subject: [PATCH 22/28] Update readme.md --- docs/L0/maas/readme.md | 71 +++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 91a7e7414..a25a57d94 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -52,7 +52,15 @@ Github CodeSpace是Github推出的线上代码平台,提供了一系列templat ![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) -创建好环境后,在终端(terminal)安装以下依赖,便于模型运行。 +创建好环境后,我们先找到终端 + +![image](https://github.com/user-attachments/assets/916f94bc-4686-402b-8012-9baf17e42ac7) + +CodeSapces 这里的界面跟vscode很类似,在下方会出现终端。 + +![image](https://github.com/user-attachments/assets/585fa33e-c44e-406c-a710-3cd6857a2ef3) + +在终端(terminal)安装以下依赖,便于模型运行。 ```bash conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y @@ -65,6 +73,7 @@ pip install accelerate==0.33.0 ``` ##### 2.1.4.1 下载internlm2_5-7b-chat的配置文件 + 考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 ``` @@ -73,7 +82,11 @@ pip install accelerate==0.33.0 ``` 以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 -```touch hf_download_josn.py ``` + +```bash +touch hf_download_josn.py +``` + 在这个文件中,粘贴以下代码 ```python @@ -103,13 +116,19 @@ for file_info in files_to_download: print(f"{file_info['filename']} file downloaded to: {file_path}") ``` 运行该文件(注意文件目录) -```python hf_download_josn.py ``` + +```bash +python hf_download_josn.py +``` + 可以看到,已经从Hugging Face上下载了相应配置文件 ![image](https://github.com/user-attachments/assets/4f0dbe4c-a82c-4cba-b6da-701c4461be20) 那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 + 如 /root/share/model_repos/internlm2-chat-7b + 在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 ##### 2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 @@ -118,7 +137,10 @@ for file_info in files_to_download: 创建一个python文件用于下载internlm2_5-1_8B模型并运行 这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 -```touch hf_download_1_8_demo.py``` +```bash +touch hf_download_1_8_demo.py +``` + 但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: ```python @@ -174,23 +196,34 @@ pip install huggingface_hub ![image](https://github.com/user-attachments/assets/25a6c0bd-7cab-4ba2-b8f4-29ac732d877d) -接着可以在CodeSpace里面,使用huggingface-cli login命令进行登录,这时需要输入刚刚的token +接着可以在CodeSpace里面,使用 + +```bash +git config --global credential.helper store +huggingface-cli login +``` + +命令进行登录,这时需要输入刚刚的token ![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) + 创建项目 ```bash #intern_study_L0_4就是model_name huggingface-cli repo create intern_study_L0_4 -# 克隆到本地 +# 克隆到本地 your_github_name 注意替换成你自己的 git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 ``` 克隆好之后,应该会在文件夹那边出现对应的文件夹 -![image](https://github.com/user-attachments/assets/0d451f6f-3a59-45db-85d6-ce92a1f1bb64) -> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 +![image](https://github.com/user-attachments/assets/1e552704-8d4e-4a50-9159-f3119e630f69) + + +> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中(如果有的话)。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 + 我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: ``` @@ -202,33 +235,45 @@ git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 现在可以用git提交到远程仓库 ```bash +cd intern_study_L0_4 git add . -git commit -m "init:intern_study_L0_4" +git commit -m "add:intern_study_L0_4" git push ``` ``` 注意,如果git push 报错,可能是第一次上传时需要验证,请使用以下命令,注意替换<>里面的内容,然后再次git push一下就可以了 ``` + ```bash git remote set-url origin https://:@huggingface.co/ + # 如 git remote set-url origin https://blank:hf_xxxxxxxxxxx@huggingface.co/blank/intern_study_L0_4 + # 这里blank和hf_xxxxxxxxxxxx只是示例 请替换为你的username和之前申请的access token + git pull origin ``` -现在可以在Hugging Face的个人profile里面看到这个model,也可以直接输入Url到网址栏上 + +现在可以在Hugging Face的个人profile里面看到这个model,也可以直接将下面的Url输入到浏览器网址栏上 + ``` https://huggingface.co//intern_study_L0_4 ``` -![image](https://github.com/user-attachments/assets/ff2dfc31-4e18-4eb7-bb6b-aa875006cfb8) + +![image](https://github.com/user-attachments/assets/209b2ba3-c125-474a-9c60-14f3f926ae07) + - 通过平台直接创建 ![image](https://github.com/user-attachments/assets/9dee50cd-e0b9-4948-a91a-0012d77d1f3b) 创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 + ![image](https://github.com/user-attachments/assets/05c63128-40d3-4b80-95fd-56c76f34a872) + > PS:熟悉Git工作流后当然还是Git 命令更好用。 + #### 2.1.6 Hugging Face Spaces的使用 Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces @@ -251,7 +296,9 @@ Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于 ``` cd /workspaces/codespaces-jupyter/intern_cobuild ``` + 修改我们的html代码 + ```html @@ -431,4 +478,4 @@ model = AutoModel.from_pretrained("Intern/internlm2_5-1_8b-chat", trust_remote_c >openMind Library通过一套接口兼容PyTorch和MindSpore等主流框架,同时原生支持昇腾NPU处理器。 #### 2.3.2 上传模型 -在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考[上传文件 | 魔乐社区](https://modelers.cn/docs/zh/openmind-hub-client/basic_tutorial/upload.html) \ No newline at end of file +在魔乐社区一般有两种方法,第一种是安装好openmid后使用openmind的API来上传文件,另一个就是用git命令来推送文件,跟一般的git工作流相类似。可参考[上传文件 | 魔乐社区](https://modelers.cn/docs/zh/openmind-hub-client/basic_tutorial/upload.html) From 134b242e34a8ab6c45cf851664aaad1ba70461ad Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 12:58:06 +0800 Subject: [PATCH 23/28] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 已经小白测试过 --- docs/L0/maas/readme.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index a25a57d94..d3c0bc3ea 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -184,6 +184,17 @@ pip install huggingface_hub 使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,获取时,需要先验证email + + + + + +
+ Image 1 + + Image 2 +
+ ![image](https://github.com/user-attachments/assets/ca33b7a2-6ad5-4328-801e-470b3e0df8c9) 验证好之后,点击create new token,创建一个类型为“Write”的token @@ -289,7 +300,8 @@ Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于 我们可以进入files,然后clone项目进我们的CodeSpace -![image](https://github.com/user-attachments/assets/3d7607a8-c183-44fa-897a-55ef66fb018e) +![image](https://github.com/user-attachments/assets/ae396b06-f106-4f3c-a21b-284c381c06a9) + 克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 @@ -461,6 +473,7 @@ cd ml_demo ``` # 确保安装git-lfs 保证大文件的正常下载 +apt-get install git-lfs git lfs install # clone 仓库 git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git From 08527ee4e5a337560a0b4ae4b5ae7573b4b92d4e Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:47:24 +0800 Subject: [PATCH 24/28] Update readme.md --- docs/L0/maas/readme.md | 52 +++++++++++++----------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index d3c0bc3ea..588693774 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -10,32 +10,16 @@ ## 2. 课程内容 😀Hello大家好,欢迎来到书生大模型实战营第四期新鲜出炉的“玩转Hugging Face/魔搭社区/魔乐社区”教程! 此教程旨在帮助您学习当前火热的三大AI学习社区。我们将深入探索如何充分利用 Hugging Face、魔搭社区和魔乐社区的资源和工具,学习模型下载、上传以及创建您的专属Space,玩转三大平台。无论你是初学者还是资深开发者,这些社区提供的丰富资源都将为您的项目带来无限可能,一起加油! -### 2.1 HF 平台 -### 2.1.1 注册Hugging Face 平台 -![image](https://github.com/user-attachments/assets/aab0682d-cac3-4010-8dcf-1fe66764b17c) - -注册成功之后会跳转到引导页~ - -![image](https://github.com/user-attachments/assets/215b90d2-cb86-43fc-ac6f-a4f3ba6d961d) - -#### 2.1.2 查找书生系列模型 -首先,我们需要来到官网的模型模块,就可以看到如下页面: - -![image](https://github.com/user-attachments/assets/b119cabb-ead3-4296-b0fd-7eaedda491a0) - -- Filter: 用于筛选你想要的模型 -- 模型列表: 展示了可使用的模型。不带前缀的是官方提供的模型,例如gpt2,而带前缀的是第三方提供的模型。 -- 搜索框:你可以通过搜索框按名字搜索模型。 -比如我们搜索“internlm” 就会获得internlm下相关的模型 +### 2.1 HF 平台 -![image](https://github.com/user-attachments/assets/79b0a603-a77d-4191-a80d-0cc47448dbb6) +### 2.1.1 注册Hugging Face 平台 (需要魔法上网) -这里我以internlm2_5-1_8b举例 +Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功,但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今,Hugging Face已经发展成为一个拥有超过100,000个预训练模型和10,000个数据集的平台,被誉为机器学习界的GitHub。 -![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) +这里需要先注册Hugging Face https://huggingface.co/ -#### 2.1.3 InternLM模型下载 +#### 2.1.2 InternLM模型下载 在正式下载之前,我们先要介绍一下HF的Transformers库,作为HF最核心的项目,它可以: - 直接使用预训练模型进行推理 @@ -43,7 +27,11 @@ - 使用预训练模型进行迁移学习 因此在使用HF前,我们需要下载Transformers等一些常用依赖库 -#### 2.1.4 GitHub CodeSpace的使用 +这里我以internlm2_5-1_8b举例 https://huggingface.co/internlm/internlm2_5-1_8b + +![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) + +#### 2.1.3 GitHub CodeSpace的使用 ```因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace``` https://github.com/codespaces @@ -72,7 +60,7 @@ pip install protobuf==5.27.2 pip install accelerate==0.33.0 ``` -##### 2.1.4.1 下载internlm2_5-7b-chat的配置文件 +##### 2.1.3.1 下载internlm2_5-7b-chat的配置文件 考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 @@ -131,7 +119,7 @@ python hf_download_josn.py 在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 -##### 2.1.4.2 下载internlm2_5-chat-1_8b并打印示例输出 +##### 2.1.3.2 下载internlm2_5-chat-1_8b并打印示例输出 那么如果我们需想要下载一个完整的模型文件怎么办呢? 创建一个python文件用于下载internlm2_5-1_8B模型并运行 @@ -171,7 +159,7 @@ gen_kwargs = { 这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 -#### 2.1.5 模型上传 +#### 2.1.4 模型上传 - 通过CLI上传 Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。 @@ -285,7 +273,7 @@ https://huggingface.co//intern_study_L0_4 > PS:熟悉Git工作流后当然还是Git 命令更好用。 -#### 2.1.6 Hugging Face Spaces的使用 +#### 2.1.5 Hugging Face Spaces的使用 Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces ![image](https://github.com/user-attachments/assets/924fa9ed-0347-4fe0-9a0d-134e5762f19e) @@ -368,11 +356,7 @@ ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的 注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) -![image](https://github.com/user-attachments/assets/f8b3399f-4700-4d99-a346-0e71c5f23fc8) - -我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型 - -![image](https://github.com/user-attachments/assets/1065e36c-0e11-4526-b8ab-bce0774eff96) +在这里我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型,也类似于hugging face 一样拥有具体的详情页。 #### 2.2.1 创建开发机 我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 @@ -443,11 +427,7 @@ modelscope download \ ``` #### 2.2.4 上传模型 -魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。 - -![image](https://github.com/user-attachments/assets/31034227-ef8d-48f4-a859-520ca568dcbb) - -那么当上传正常的模型文件后,审核一般就会通过了。 +魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。那么当上传正常的模型文件后,审核一般就会通过了。 ![image](https://github.com/user-attachments/assets/3711b4c2-69e5-4a7d-844f-b22190620f19) From 58e705b93f64d296e942fd9a96bc3df32e212deb Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:49:28 +0800 Subject: [PATCH 25/28] Update readme.md --- docs/L0/maas/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 588693774..9b6795913 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -13,7 +13,7 @@ ### 2.1 HF 平台 -### 2.1.1 注册Hugging Face 平台 (需要魔法上网) +#### 2.1.1 注册Hugging Face 平台 (需要魔法上网) Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功,但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今,Hugging Face已经发展成为一个拥有超过100,000个预训练模型和10,000个数据集的平台,被誉为机器学习界的GitHub。 From 2f8ab0b7e7ceaa08c343794131362ccb62673d3e Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:53:23 +0800 Subject: [PATCH 26/28] Update task.md --- docs/L0/maas/task.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md index 5d35327e8..27e497eb4 100644 --- a/docs/L0/maas/task.md +++ b/docs/L0/maas/task.md @@ -4,7 +4,7 @@ | 任务 | 描述 | 时间 | | --- | --- | --- | -| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型,请在必要的步骤以及结果当中截图。 | 20min | +| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensors.index.json文件。在hugging face平台中),请在必要的步骤以及结果当中截图。 | 20min | | 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | | Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | @@ -12,4 +12,4 @@ 优秀作业必做可选内容 请将作业发布到知乎、CSDN等任一社交媒体,将作业链接提交到以下问卷,助教老师批改后将获得 50 算力点奖励!!! -提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd \ No newline at end of file +提交地址:https://aicarrier.feishu.cn/share/base/form/shrcnUqshYPt7MdtYRTRpkiOFJd From 0fdb9e3e5c270ee9fee3e21079806011a675dd59 Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:53:49 +0800 Subject: [PATCH 27/28] Update task.md --- docs/L0/maas/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/L0/maas/task.md b/docs/L0/maas/task.md index 27e497eb4..10e339e82 100644 --- a/docs/L0/maas/task.md +++ b/docs/L0/maas/task.md @@ -4,7 +4,7 @@ | 任务 | 描述 | 时间 | | --- | --- | --- | -| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensors.index.json文件。在hugging face平台中),请在必要的步骤以及结果当中截图。 | 20min | +| [模型下载](https://huggingface.co/internlm/internlm2-chat-1_8b) | 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensors.index.json文件),请在必要的步骤以及结果当中截图。 | 20min | | 模型上传(可选) | 将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。 | 10min | | Space上传(可选) | 在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。 | 10min | From e34abc2f96c2374d70c92af37a50f70c2f8830ab Mon Sep 17 00:00:00 2001 From: Blank_Answer <97771966+blankanswer@users.noreply.github.com> Date: Fri, 18 Oct 2024 18:50:22 +0800 Subject: [PATCH 28/28] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 裁剪冗余内容 --- docs/L0/maas/readme.md | 355 +++++++++++++++++++++++------------------ 1 file changed, 199 insertions(+), 156 deletions(-) diff --git a/docs/L0/maas/readme.md b/docs/L0/maas/readme.md index 9b6795913..4f303e07a 100644 --- a/docs/L0/maas/readme.md +++ b/docs/L0/maas/readme.md @@ -17,7 +17,11 @@ Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功,但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今,Hugging Face已经发展成为一个拥有超过100,000个预训练模型和10,000个数据集的平台,被誉为机器学习界的GitHub。 -这里需要先注册Hugging Face https://huggingface.co/ +这里需要进入Hugging Face的官网进行注册: + +``` +https://huggingface.co/ +``` #### 2.1.2 InternLM模型下载 @@ -27,28 +31,32 @@ Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天 - 使用预训练模型进行迁移学习 因此在使用HF前,我们需要下载Transformers等一些常用依赖库 -这里我以internlm2_5-1_8b举例 https://huggingface.co/internlm/internlm2_5-1_8b - -![image](https://github.com/user-attachments/assets/6f399159-743b-4eb7-b5d4-af75b4c00d06) +这里我们以**internlm2_5-1_8b**举例,查看Hugging Face上该模型的地址 -#### 2.1.3 GitHub CodeSpace的使用 - -```因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace``` -https://github.com/codespaces +``` +https://huggingface.co/internlm/internlm2_5-1_8b +``` -Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择Jupyter Notebook进行创建环境 + + + + +
+ Image 1 +
-![image](https://github.com/user-attachments/assets/68eeba74-d079-49df-938c-c84d070f7e7c) -创建好环境后,我们先找到终端 +#### 2.1.3 GitHub CodeSpace的使用 -![image](https://github.com/user-attachments/assets/916f94bc-4686-402b-8012-9baf17e42ac7) +**因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用CodeSpace** -CodeSapces 这里的界面跟vscode很类似,在下方会出现终端。 +``` +https://github.com/codespaces +``` -![image](https://github.com/user-attachments/assets/585fa33e-c44e-406c-a710-3cd6857a2ef3) +Github CodeSpace是Github推出的线上代码平台,提供了一系列templates,我们这里选择**Jupyter Notebook**进行创建环境。创建好环境后,可以进入网页版VSCode的界面,这就是CodeSpace提供给我们的在线编程环境。 -在终端(terminal)安装以下依赖,便于模型运行。 +在界面下方的终端(terminal)安装以下依赖,便于模型运行。 ```bash conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y @@ -63,11 +71,7 @@ pip install accelerate==0.33.0 ##### 2.1.3.1 下载internlm2_5-7b-chat的配置文件 考虑到个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。 - -``` -因为CodeSpace平台上默认用户权限,不是root权限,这里为方便演示直接在工作区创建文件 -以下目录均为/workspaces/codespaces-jupyter -``` +考虑到CodeSpace平台上默认的用户权限不是root权限,这里为方便演示直接在工作区创建文件,即 **/workspaces/codespaces-jupyter** 目录 以下载模型的配置文件为例,先新建一个hf_download_josn.py 文件 @@ -103,7 +107,8 @@ for file_info in files_to_download: ) print(f"{file_info['filename']} file downloaded to: {file_path}") ``` -运行该文件(注意文件目录) + +运行该文件(注意文件目录请在该文件所在目录下运行该文件) ```bash python hf_download_josn.py @@ -111,25 +116,33 @@ python hf_download_josn.py 可以看到,已经从Hugging Face上下载了相应配置文件 -![image](https://github.com/user-attachments/assets/4f0dbe4c-a82c-4cba-b6da-701c4461be20) -那么如何使用internlm2_5-7b-chat模型呢?可以在InternStudio 的/share目录下找到 +
+ + + + +
+ Image 1 +
+
+ -如 /root/share/model_repos/internlm2-chat-7b +那么如何使用internlm2_5-7b-chat模型呢?在实战营课程中,可以在我们的[InternStudio平台](https://studio.intern-ai.org.cn/console/dashboard) 的 `/root/share` 目录下找到作为`model_name_or_path`进行使用,如 -在之后我们InternStudio的实验中,基本上都可以使用 /share 目录下的模型文件夹地址作为`model_name_or_path`传参到AutoTokenizer.from_pretrained()和AutoModelForCausalLM.from_pretrained()中,即可加载模型文件 +```bash +/root/share/model_repos/internlm2-chat-7b +``` ##### 2.1.3.2 下载internlm2_5-chat-1_8b并打印示例输出 -那么如果我们需想要下载一个完整的模型文件怎么办呢? -创建一个python文件用于下载internlm2_5-1_8B模型并运行 -这里下载跟网速比较相关,一般来说十多分钟就搞定了,但是如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件 +那么如果我们需想要下载一个完整的模型文件怎么办呢?创建一个python文件用于下载internlm2_5-1_8B模型并运行。下载速度跟网速和模型参数量大小相关联,如果网速较慢的小伙伴可以只尝试下载1.8b模型对应的config.json文件以及其他配置文件。 -```bash +```bash, touch hf_download_1_8_demo.py ``` -但是注意到在Codespace平台上是没有GPU资源的,因此我们python代码中只使用CPU进行推理,我们需要删掉跟CUDA有关的API,在hf_download_1_8_demo.py文件中粘贴以下内容: +注意到在CodeSpace平台上是没有GPU资源的,因此我们Python代码中只使用CPU进行推理,我们需要修改跟CUDA有关的API,在`hf_download_1_8_demo.py`文件中粘贴以下内容: ```python import torch @@ -153,13 +166,124 @@ gen_kwargs = { # output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True) # print(output) ``` -等待几分钟后(跟网速有关),会在控制台返回模型生成的结果(解除注释后) -![image](https://github.com/user-attachments/assets/77092291-c3fc-4541-8dc5-edfeee65acc0) +等待几分钟后,会在控制台返回模型生成的结果(解除注释后) + +
-这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。这个问题描述了一个操作,即每次操作可以取走2片花瓣,并且给每片花瓣增加1片。目标是使花瓣的数量尽可能大。 + + + + +
+ Image 1 +
+ +
+ +这里以“A beautiful flower”开头,模型对其进行“续写”,InternLM的模型拥有强大的数学方面的能力。这边它输出的文本似乎是关于一个数学问题,具体是关于一个花朵的花瓣数量。 + +#### 2.1.4 Hugging Face Spaces的使用 + +Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 +首先访问以下链接,进入Spaces。在右上角点击**Create new Space**进行创建: + +``` +https://huggingface.co/spaces +``` + +在创建页面中,输入项目名为`intern_cobuild`,并选择`Static`应用进行创建 + + +
+ + + + + +
+ Image 1 +
+ +
+ +创建成功后会自动跳转到一个默认的HTML页面。创建好项目后,回到我们的CodeSpace,clone项项目。 + +**注意这里请替换你自己的username** + +```bash +cd /workspaces/codespaces-jupyter +# 请将替换你自己的username +git clone git clone https://huggingface.co/spaces//intern_cobuild +cd /workspaces/codespaces-jupyter/intern_cobuild +``` + +找到该目录文件夹下的index.html文件,修改我们的html代码 + +```html + + + + + + My static Space + + + + + + + +``` +保存后就可以push到远程仓库上了,它会自动更新页面。 + +```bash +git add. +git commit -m "update: colearn page" +git push +``` + +``` +如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. +请再次设置这个项目的验证 +git remote set-url origin https://:@huggingface.co/ +例如: +git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ +然后再次git push即可 +``` + +再次进入Space界面,就可以看到我们实战营的共建活动捏~ + +
+ + + + + +
+ Image 1 +
+ +
+ +#### 2.1.5 模型上传 -#### 2.1.4 模型上传 - 通过CLI上传 Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs,对大文件系统支持。 @@ -175,25 +299,33 @@ pip install huggingface_hub +
- Image 1 + Image 1 - Image 2 + Image 2 + + Image 1
-![image](https://github.com/user-attachments/assets/ca33b7a2-6ad5-4328-801e-470b3e0df8c9) -验证好之后,点击create new token,创建一个类型为“Write”的token -![image](https://github.com/user-attachments/assets/b9a1c1c2-6a31-4efa-b4dd-f387cfbfc9d1) -``` -请复制好token后一定要存储在合适的地方,不然关闭对话框之后,就看不到了 -``` +完成验证后,点击create new token,创建一个类型为“Write”的token,**并请复制好token后要存储在合适的地方** + -![image](https://github.com/user-attachments/assets/25a6c0bd-7cab-4ba2-b8f4-29ac732d877d) + + + + + +
+ Image 2 + + Image 3 +
接着可以在CodeSpace里面,使用 @@ -204,7 +336,13 @@ huggingface-cli login 命令进行登录,这时需要输入刚刚的token -![image](https://github.com/user-attachments/assets/fcd69f8a-596b-4e72-8d56-00a1635d0271) + + + + +
+ Image 2 +
创建项目 @@ -216,12 +354,7 @@ huggingface-cli repo create intern_study_L0_4 git clone https://huggingface.co/{your_github_name}/intern_study_L0_4 ``` -克隆好之后,应该会在文件夹那边出现对应的文件夹 - -![image](https://github.com/user-attachments/assets/1e552704-8d4e-4a50-9159-f3119e630f69) - - -> 使用cp命令,将自己已经训练好保存的模型文件夹中的内容复制到这个repo中(如果有的话)。注意:这里的模型文件夹是指通过transformers的官方接口保存的模型文件夹,比如可以使用model.save_pretrained()或者trainer训练过程中自动保存的checkpoint文件夹。 +克隆好之后,刷新文件目录可以看到克隆好的`intern_study_L0_4`文件夹。 我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进这个文件夹里面,还可以写一个README.md文件,比如可以粘贴以下内容: @@ -260,127 +393,36 @@ git pull origin https://huggingface.co//intern_study_L0_4 ``` -![image](https://github.com/user-attachments/assets/209b2ba3-c125-474a-9c60-14f3f926ae07) - - -- 通过平台直接创建 - -![image](https://github.com/user-attachments/assets/9dee50cd-e0b9-4948-a91a-0012d77d1f3b) - -创建一个空的仓库,然后可以通过Add file进行模型文件的上传,也可以git clone后,跟上述操作一样。 - -![image](https://github.com/user-attachments/assets/05c63128-40d3-4b80-95fd-56c76f34a872) - -> PS:熟悉Git工作流后当然还是Git 命令更好用。 - -#### 2.1.5 Hugging Face Spaces的使用 -Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。 -首先在界面上找到HF的Spaces并进行创建一个新的Space https://huggingface.co/spaces -![image](https://github.com/user-attachments/assets/924fa9ed-0347-4fe0-9a0d-134e5762f19e) - -选择Static应用,其他可以按自己喜好填好,然后点击Create Space即可 - -![image](https://github.com/user-attachments/assets/48f96d31-a79d-4083-8b3e-ad479701399a) - -然后就得到一个static 的html页面 - -![image](https://github.com/user-attachments/assets/f1e405a4-e0ff-48c9-a631-013aaeb0f2a6) - -我们可以进入files,然后clone项目进我们的CodeSpace - -![image](https://github.com/user-attachments/assets/ae396b06-f106-4f3c-a21b-284c381c06a9) - - -克隆成功后进入该项目的文件目录,比如在/workspaces/codespaces-jupyter目录下clone的那么就需要 - -``` -cd /workspaces/codespaces-jupyter/intern_cobuild -``` - -修改我们的html代码 - -```html - - - - - - My static Space - - - - - - -``` -保存后就可以push到远程仓库上了,它会自动更新页面。 - -```bash -git add. -git commit -m "update: colearn page" -git push -``` - -``` -如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead. -请再次设置这个项目的验证 -git remote set-url origin https://:@huggingface.co/ -例如: -git remote set-url origin https:/jack:hf_xxxxx@huggingface.co/spaces/jack/intern_cobuild/ -然后再次git push即可 -``` - -再次进入Space界面,就可以看到我们实战营的共建活动捏~ -![image](https://github.com/user-attachments/assets/4b6d4417-4a0e-43d0-a67a-28648935ac3b) + + + + +
+ Image 2 +
### 2.2 魔搭社区平台 ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。 -注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型) - -在这里我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型,也类似于hugging face 一样拥有具体的详情页。 +注册登录ModelScope平台,进入导航栏模型库,可以搜索internlm找到相关模型(但是这也包括非官方模型),在这里我们可以搜索 internlm2_5-chat-1_8b,下载1.8b的对话模型,也类似于hugging face 一样拥有具体的详情页。 #### 2.2.1 创建开发机 我们选择 10% 的开发机,镜像选择为 Cuda-12.2。在输入开发机名称后,点击创建开发机。 + ![image](https://github.com/user-attachments/assets/cc81af53-1c5d-4e9a-9459-716d78a5c123) 创建好开发机后,进入开发机 ![image](https://github.com/user-attachments/assets/6274b5c4-a4a5-4dc3-9eee-65b562cd40ca) -在开发机界面的左上角处,选择使用vscode进行编辑代码 - - -![image](https://github.com/user-attachments/assets/267a7478-1be7-493f-8d64-1424b6aa88a5) -新建终端后,在vscode下方出现终端,我们可以输入命令进行操作 +**接着在当前终端上可以输入命令了,这里可以直接粘贴以下命令。最好一行一行粘贴等每个命令跑完之后再粘贴下一行** -![image](https://github.com/user-attachments/assets/dd40dcca-8af8-469f-ab28-dc573a92797b) - -接着在终端后面可以输入命令了,这里可以直接粘贴以下命令 -``` -最好一行一行粘贴等每个命令跑完之后再粘贴下一行 -``` #### 2.2.2 环境配置 + 为ms_demo创建一个可用的conda虚拟环境,可以和其他环境区分开来 ```python @@ -429,11 +471,12 @@ modelscope download \ #### 2.2.4 上传模型 魔搭社区类似HF,也有一套创建模型的界面。不同的是,它具有审核机制,当符合它的社区规范时才会被公开。那么当上传正常的模型文件后,审核一般就会通过了。 -![image](https://github.com/user-attachments/assets/3711b4c2-69e5-4a7d-844f-b22190620f19) +上传文件的方法可以直接通过平台添加文件,也可以通过git下载模型后进行修改和上传文件 -上传文件的方法可以直接通过平台添加文件,也可以用以下方法 - -![image](https://github.com/user-attachments/assets/cc300e62-515b-4709-af13-5b049e4a7cdd) +```bash +#Git模型下载 +git clone https://www.modelscope.cn// +``` ### 2.3 魔乐社区平台