Compare commits

...

19 Commits
FM_9G ... FM_9G

Author SHA1 Message Date
p04896573 11f3143875 Update README.md 2025-02-08 14:38:00 +08:00
p04896573 3dab1da965 Update README.md 2025-02-05 16:32:20 +08:00
p20367984 7c41fa364e Update README.md 2025-01-08 15:44:00 +08:00
p20367984 514055411b Update README.md 2025-01-08 15:42:03 +08:00
p20367984 f72ea96ca9 Update README.md 2025-01-08 15:40:40 +08:00
p20367984 a697656481 Update README.md 2025-01-08 15:38:38 +08:00
p20367984 7067418f2b Update README.md 2025-01-08 15:37:38 +08:00
p20367984 0fd9a9bb57 Update README.md 2025-01-08 15:37:16 +08:00
p20367984 0b5b4156c3 Update README.md 2025-01-08 15:36:37 +08:00
p04896573 ef028167cd Update quick_start.md 2024-12-05 10:31:59 +08:00
p18457032 e747382e0d Update README.md 2024-09-14 16:15:16 +08:00
p18457032 8bcac9af92 Update README.md 2024-09-14 16:13:01 +08:00
p04896573 50c194a521 Update README.md 2024-08-27 16:59:28 +08:00
p18457032 acc100b692 Update QUICK_START.md 2024-08-19 16:36:59 +08:00
p04896573 24b1c46927 Update README.md 2024-08-19 11:08:55 +08:00
p04896573 97539a1f44 Update README.md 2024-08-19 11:08:17 +08:00
p04896573 e4da44fcdc Update README.md 2024-08-19 11:07:45 +08:00
p04896573 a3d4a6dad5 Update README.md 2024-08-19 11:06:46 +08:00
p04896573 0c938e73d0 Update README.md 2024-08-19 11:04:47 +08:00
2 changed files with 79 additions and 17 deletions

View File

@ -1,18 +1,38 @@
# 九格通用基础大模型
## 简介
启元九格大模型由启元实验室牵头,联合清华大学、哈尔滨工业大学、中国科学院计算技术研究所、北京大学、南开大学等优势单位共同研制。具有高效训练与推理和高效适配与部署的技术特点,具备文本问答、文本分类、机器翻译、文本摘要等自然语言处理能力。
## 最新消息
- 本次启元九格开源两个参数级别模型分别是百亿级通用基础大模型为8B80亿和端侧模型2B20亿参数具体的模型训练、推理等内容见[QUICK START](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/FM_9G/quick_start_clean/readmes/quick_start.md)
- 若还在使用旧版本的九格模型训练和推理,请切换分支到[master](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/master/quick_start_clean/readmes/README_ALL.md)
## 简介
启元九格大模型由启元实验室牵头,联合清华大学、哈尔滨工业大学、中国科学院计算技术研究所、北京大学、南开大学等顶尖科研单位共同研发。该模型具备 **高效训练与推理**、**高效适配与部署** 的技术特点,支持多种 **自然语言处理NLP****多模态** 任务,包括 **文本问答、文本分类、机器翻译、文本摘要、图文理解等**
## 版本更新内容
具体的迭代信息如下:
- 训练升级了训练代码提升GPU利用率和并行化并且2B模型能兼容transformers中的tokenizer(LlamaTokenizerFast)
- 推理支持vllm进行模型推理和部署可以接入langchain、openai等部署方式同时可以将端侧模型可以支持GGUF等多种部署格式的部署
- LORA代码暂未实现至新版本代码框架中预计八月份完成若需要LORA训练请切换分支至master
---
## 更新信息
### 🔥 最新版本2025.01.12[**FM9G-V**](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/FM9G-V/quick_start_clean/readmes/quick_start.md)
- **模型****13B 多模态基础大模型**,支持 **单图文推理**
- **训练**:开源了 **多模态基础大模型** 的训练代码。
- **推理**:支持 **单图文推理**
### 🚀 历史更新2024.08.19[**FM9G**](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/FM_9G/quick_start_clean/readmes/quick_start.md)
- **2B 模型** 经过多数据集验证,发现 **LoRA 训练效果不及全参数微调**,因此 2B 采用 **全参数微调** 训练。
- **8B 模型** LoRA 微调仍在 **master 分支** 进行训练。
- **QUICK START** 中更新了 **2B 全参数微调** 的详细信息。
---
### 📚 其他信息
- 若仍在使用旧版本的九格模型训练和推理,请切换分支至 [master](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/master/quick_start_clean/readmes/README_ALL.md) 分支。
---
### 📌 开源模型参数级别
| 模型 | 主要能力 | 参数规模 | 代码分支 |
|---------------|-------------------|--------|--------|
| **FM9G-8B** | **文本处理NLP** | 80 亿 | FM9G |
| **FM9G-2B** | **文本处理NLP** | 20 亿 | FM9G |
| **FM9G-V13B** | **多模态(文本+图像)** | 130 亿 | FM9G-V |
# 迈向通用智能的大模型技术系列课程
系列课程全方位介绍人工智能和大模型技术的基础知识和前沿课题,理论学习和实践应用相结合。课程既有“人工智能与大模型通论”和“神经网络与预训练模型”等基础知识,也有“九格大模型生态体系”和“领域大模型实战”等实战主题,基本内容包括大模型训练、微调、知识增强、伦理安全、多模态、具身智能、自主智能体等话题,高级选题包括多语言处理、面向科学研究的大模型应用、高效计算技术、评测与数据科学等话题。课程旨在通过一系列精心设计的单元为学习者提供大型通用人工智能的学习之旅。

View File

@ -52,6 +52,7 @@
- [多机训练](#多机训练)
- [参数详细介绍](#参数详细介绍)
- [查看训练情况](#查看训练情况)
- [模型微调](#模型微调)
- [模型格式转换](#模型格式转换)
- [模型推理](#模型推理)
- [常见问题](#常见问题)
@ -106,12 +107,17 @@ pip install sentencepiece
pip install protobuf==3.20.0 #protobuf版本过高时无法适配tensorboard
pip install tensorboard
pip install tensorboardX
9.安装vllm模型推理
我们提供python3.8、python3.10版本的vllm安装包相关依赖均已封装可直接安装后执行推理
```
### 推理环境安装
```
装vllm模型推理
我们提供基于CUDA12.2环境下python3.8、python3.10版本的vllm安装包相关依赖均已封装可直接安装后执行推理
[vllm-0.5.0.dev0+cu122-cp38-cp38-linux_x86_64.whl](https://qy-obs-6d58.obs.cn-north-4.myhuaweicloud.com/vllm-0.5.0.dev0%2Bcu122-cp38-cp38-linux_x86_64.whl)
[vllm-0.5.0.dev0+cu122-cp310-cp310-linux_x86_64.whl](https://qy-obs-6d58.obs.cn-north-4.myhuaweicloud.com/vllm-0.5.0.dev0%2Bcu122-cp310-cp310-linux_x86_64.whl)
针对CUDA版本不高的用户我们提供了兼容低版本CUDA的vllm安装包但经测试最低支持CUDA11.6因此如果您的服务器CUDA版本低于11.6,请先将其升级至该版本以上,以确保兼容性和正常运行:
[vllm-0.5.0.dev0+cu116-cp38-cp38-linux_x86_64.whl](https://qy-obs-6d58.obs.cn-north-4.myhuaweicloud.com/vllm-0.5.0.dev0%2Bcu116-cp38-cp38-linux_x86_64.whl)
同时我们也提供了vllm源码,位于/quick_start_clean/tools/vllm-0.5.0.dev0.tar
```
### docker环境
@ -434,6 +440,27 @@ tensorboard -logdir /apps/fm9g_2b/data/tensorboard/2b_0701 #存放.events文
TypeError: MessageToJson() got an unexpected keyword argument 'including_default_value_fields'
```
## 模型微调
模型微调列举了两种微调方法全参数微调以及LORA微调。
### 全参数微调训练:
全参数微调训练与原始模型训练方法基本一致,需要额外注意以下几点:
1.数据集类型
训练数据集通常包含大量、多样化的数据,覆盖广泛的主题和语言现象,用于学习广泛的知识和技能。通过无监督学习,训练数据集可能不包含显式标签,模型通过预测下一个词或填补缺失词语来学习模式。
微调数据集更专注于特定的领域或任务,通常是有标签的,并且标签与目标任务直接相关。例如,微调分类模型时,数据集中的每条数据都有对应的分类标签;微调翻译模型时,数据集中包含源语言和目标语言的句子对。
需要根据具体微调任务设计与选择合适的微调数据集。
2.预训练模型的引入
修改训练脚本参数文件:/apps/fm9g_2b/pretrain_dragonfly.sh引入args["load"]参数,里面补充基于微调的预训练模型的路径即可:
```python
#基于微调的预训练模型路径
args["load"]="../models/sft_2b/"
```
### LORA微调训练
由于新架构中多数据集验证发现2B模型进行LORA训练效果不及全参数微调因此建议2B模型全参数微调8B模型LORA微调在master分支进行。
## 模型格式转换
模型训练完成后需将pt格式模型文件转换为bin格式模型文件用于模型推理。
我们在本项目中提供了2B模型两种格式相互转换时所用到脚本脚本位于./quick_start_clean/convert_hf_fm9g.py应用方法如下
@ -539,6 +566,14 @@ INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
```
部署阶段部分参数说明:
```shell
1.openai暂不支持配置--repetition_penalty参数。
2.如发生OOM内存溢出问题可修改相关参数在启动服务时一并传入:
--max-model-len默认最大位置嵌入max_position_embedding为32768可以修改为4096。
--gpu-memory-utilization默认该值为0.9因此占用显存比较高2B模型可修改为0.28B模型可修改为0.5。
```
2. 调用推理API
启动服务端成功后重新打开一个终端可参考执行以下python脚本
@ -552,8 +587,15 @@ client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
completion = client.completions.create(model="../models/9G/",
prompt="San Francisco is a")
#指定模型路径推理prompt以及设置采样参数以控制生成文本
completion_params = {
"model": "../models/9G/",
"prompt": "San Francisco is a",
"temperature": 0.8,
"top_p": 0.95,
"max_tokens": 200
}
completion = client.completions.create(**completion_params)
print("Completion result:", completion)
```