README.md 5 KB
Newer Older
chenych's avatar
chenych committed
1
2
3
# Mistral
## 论文
暂无
chenych's avatar
chenych committed
4

chenych's avatar
chenych committed
5
## 模型结构
chenych's avatar
chenych committed
6
基于transformer结构
chenych's avatar
chenych committed
7
8
9
10
11
<div align=center>
    <img src="./doc/transformers.jpg" witdh=300 height=400/>
</div>

## 算法原理
chenych's avatar
chenych committed
12
‌Mistral模型是由法国初创公司Mistral AI开发的高性能开源大语言模型系列,以小参数规模实现优异性能为核心突破,涵盖7B、MoE混合专家架构及最新代理开发专用模型等多版本演进。‌ 该系列以滑动窗口注意力、完全开源协议和量化友好设计为技术亮点,在代码生成、推理效率等场景表现卓越。‌‌‌‌
chenych's avatar
chenych committed
13

chenych's avatar
chenych committed
14
15
16
高性能小参数架构:
- Mistral 7B(70亿参数)在常识推理、代码生成等基准测试中超越Llama 2 13B,消费级硬件即可流畅运行。‌‌
- 混合专家(MoE)版本如Mixtral 8x7B,每token激活2个专家层,总参数45B但计算效率对标12B密集模型,实现性能与资源消耗的平衡
chenych's avatar
chenych committed
17

chenych's avatar
chenych committed
18
19
20
‌优化的注意力机制:
- ‌滑动窗口注意力(SWA)‌:默认窗口大小4K tokens,通过局部注意力缓存降低显存占用,实测支持32K长上下文处理。‌‌‌
- 部分新版模型(如mistral-7b-instruct-v0.2)已取消SWA机制,采用标准注意力模式。‌‌
chenych's avatar
chenych committed
21
22
23
24
25
26

## 环境配置
`-v 路径``docker_nam`e和`imageID`根据实际情况修改

### Docker(方法一)
```bash
chenych's avatar
chenych committed
27
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.8.5-ubuntu22.04-dtk25.04-rc7-das1.5-py3.10-20250521-fixpy-rocblas0521-beta2
chenych's avatar
chenych committed
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
docker run -it --shm-size 200g --network=host --name {docker_name} --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro {imageID} bash

cd /your_code_path/mistral_pytorch
```

### Dockerfile(方法二)
```bash
cd docker
docker build --no-cache -t mistral:latest .
docker run -it --shm-size 200g --network=host --name {docker_name} --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro {imageID} bash

cd /your_code_path/mistral_pytorch
```

### Anaconda(方法三)
chenych's avatar
Update  
chenych committed
43
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
chenych's avatar
chenych committed
44
45
46
```bash
DTK: 25.04
python: 3.10
chenych's avatar
Update  
chenych committed
47
vllm: 0.8.5
chenych's avatar
chenych committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
torch: 2.4.1+das.opt2.dtk2504
deepspeed: 0.14.2+das.opt2.dtk2504
```
`Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应`

## 数据集


## 训练
### Llama Factory 微调方法(推荐)
1. 训练库安装(**非mistral_pytorch目录下**),安装**主线版本**`Llama-Factory`具体安装方法请参考仓库的README。
```
git clone https://developer.sourcefind.cn/codes/OpenDAS/llama-factory
```

2. 通过[预训练权重](#预训练权重)下载预训练模型,当前用例使用[Mistral-7B-Instruct-v0.3](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.3)模型。

#### 全参微调

SFT训练脚本示例,参考`llama-factory/train_full`下对应yaml文件。

**参数修改**
- **--model_name_or_path**: 修改为待训练模型地址,如 `/data/mistralai/Mistral-7B-Instruct-v0.3`
- **--dataset**: 微调训练集名称,可选数据集请参考 `llama-factory/data/dataset_info.json`
- **--template**: 将 default 修改为 `mistral`
- **--output_dir**: 模型保存地址

其他参数如:`--learning_rate``--save_steps`可根据自身硬件及需求进行修改。

#### lora微调

SFT训练脚本示例,参考`llama-factory/train_lora`下对应yaml文件。
参数解释同[#全参微调](#全参微调)

## 推理
chenych's avatar
Update  
chenych committed
83
84
### vllm
#### offline
chenych's avatar
chenych committed
85
```bash
chenych's avatar
Update  
chenych committed
86
python infer_vllm.py --model_name_or_path /path_of/mistralai/Mistral-7B-Instruct-v0.3
chenych's avatar
chenych committed
87
88
```

chenych's avatar
Update  
chenych committed
89
90
### server
1. 启动服务
chenych's avatar
chenych committed
91
```bash
chenych's avatar
Update  
chenych committed
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
vllm serve mistralai/Mistral-7B-Instruct-v0.3 --tokenizer_mode mistral --config_format mistral --load_format mistral --served-model-name Mistral-7B-Instruct --trust-remote-code --enforce-eager
```

2. 测试client
```
curl http://<your-node-url>:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Mistral-7B-Instruct",
        "messages": [
            {
                "role": "user",
                "content": "Explain Machine Learning to me in a nutshell."
                }
            ],
         "temperature": 0.15
    }'
chenych's avatar
chenych committed
109
110
111
112
```

## result
<div align=center>
chenych's avatar
Update  
chenych committed
113
    <img src="./doc/results.pngcd ../"/>
chenych's avatar
chenych committed
114
115
116
</div>

### 精度
chenych's avatar
Update  
chenych committed
117
DCU与GPU精度一致,推理框架:pytorch。
chenych's avatar
chenych committed
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

## 应用场景
### 算法类别
对话问答

### 热点应用行业
制造,广媒,家居,教育

## 预训练权重
- [Mistral-7B-v0.3](http://huggingface.co/mistralai/Mistral-7B-v0.3)
- [Mistral-7B-Instruct-v0.3](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.3)

## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/mistral_pytorch

## 参考资料
- https://huggingface.co/mistralai
- https://github.com/hiyouga/LLaMA-Factory/