Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
300 changes: 300 additions & 0 deletions examples/mistral-moe_PyNative/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,300 @@
# 基于MindSpore2.6动态图写法实现带有MoE结构的mistra



## 🎯 项目特点

- ✅ **完整的Mistral模型实现**:支持标准和MoE变体,包含滑动窗口注意力、分组查询注意力
- ✅ **MindSpore 2.6动态图模式**:保持开发灵活性,支持PYNATIVE_MODE
- ✅ **丰富的应用案例**:智能文本摘要生成器、代码生成助手、MoE路由演示
- ✅ **全面的测试验证**:单元测试、集成测试、性能基准测试
- ✅ **完整的教程体系**:详细教程、快速入门指南、目录结构说明
- ✅ **高性能MoE路由**:支持负载均衡、专家专业化、可视化分析

## 🚀 快速开始

### 环境要求

- **Python**: 3.8-3.10
- **MindSpore**: >= 2.6.0
- **MindNLP**: >= 0.4.0
- **内存**: >= 8GB RAM
- **存储**: >= 2GB 可用空间

### 安装

```bash
# 创建虚拟环境
conda create -n mindspore_moe python=3.9
conda activate mindspore_moe

# 安装依赖
pip install -r requirements.txt
```

### 使用示例

```python
import mindspore
from mindspore import context

# 设置动态图模式
context.set_context(mode=context.PYNATIVE_MODE)

from models.mistral.configuration_mistral import MistralConfig, MoeConfig
from models.mistral.modeling_mistral import MistralForCausalLM

# 创建标准Mistral模型
config = MistralConfig(
vocab_size=32000,
hidden_size=4096,
num_hidden_layers=32,
num_attention_heads=32,
num_key_value_heads=8,
)
model = MistralForCausalLM(config)

# 创建Mixtral MoE模型
config_moe = MistralConfig(
vocab_size=32000,
hidden_size=4096,
num_hidden_layers=32,
num_attention_heads=32,
num_key_value_heads=8,
moe=MoeConfig(num_experts=8, num_experts_per_tok=2)
)
model_moe = MistralForCausalLM(config_moe)

# 推理示例
input_ids = mindspore.ops.randint(0, config.vocab_size, (1, 10))
outputs = model(input_ids)
logits = outputs[1]
```

## 📁 项目结构

```
mistral-mindnlp-moe/
├── models/ # 🧠 模型定义目录
│ └── mistral/
│ ├── __init__.py
│ ├── configuration_mistral.py # 配置类(支持MoE)
│ ├── modeling_mistral.py # 模型实现
│ └── tokenization_mistral.py # 分词器
├── course/ # 📚 课程材料和应用案例
│ ├── README.md # 详细教程和介绍
│ ├── QUICK_START_GUIDE.md # 快速入门指南
│ ├── DIRECTORY_STRUCTURE.md # 目录结构说明
│ └── code_examples/ # 💻 应用案例代码
│ ├── smart_text_summarizer.py # 🤖 智能文本摘要生成器
│ ├── code_generation_assistant.py # 💻 代码生成助手
│ └── moe_routing_demo.py # 🔀 MoE路由机制演示
├── test/ # ✅ 测试验证目录
│ ├── validation_suite.py # 完整验证套件
│ └── final_validation.py # 最终验证脚本
├── requirements.txt # 📦 依赖包列表
└── README.md # 📋 项目主文档
```

## 🎯 应用案例

### 1. 智能文本摘要生成器

**功能特性:**
- 支持5种文本类型:新闻、科技、文学、学术、通用
- 智能质量评估:压缩比、词汇覆盖率、重复度
- 专家路由分析:专家使用分布和负载均衡
- 批量处理能力:支持多文本并行处理
- 可视化分析:生成专家使用分析图表

**使用示例:**
```python
from course.code_examples.smart_text_summarizer import SmartTextSummarizer

# 初始化摘要生成器
summarizer = SmartTextSummarizer()

# 生成摘要
text = "这是一段需要摘要的长文本..."
result = summarizer.generate_summary(
text=text,
summary_type="news",
max_summary_length=200
)

print(f"摘要: {result['summary']}")
print(f"质量评分: {result['quality_metrics']['quality_score']}")
```

### 2. 代码生成助手

**功能特性:**
- 支持3种编程语言:Python、JavaScript、Java
- 支持5种代码类型:函数、类、脚本、补全、注释
- 智能质量分析:缩进、命名、注释、结构评分
- 语言特定专家路由:不同语言的专家分布优化
- 代码复杂度分析:自动评估代码复杂度

**使用示例:**
```python
from course.code_examples.code_generation_assistant import CodeGenerationAssistant

# 初始化代码生成助手
assistant = CodeGenerationAssistant()

# 生成代码
result = assistant.generate_code(
prompt="计算斐波那契数列",
language="python",
code_type="function"
)

print(f"生成的代码:\n{result['code']}")
print(f"质量评分: {result['quality_metrics']['overall_score']}")
```

### 3. MoE路由机制演示

**功能特性:**
- 3种路由器实现:简单、噪声、负载均衡
- 专家专业化演示:不同输入特征的专家选择
- 容量限制分析:容量因子对路由的影响
- 路由模式可视化:热力图和负载分布图

**使用示例:**
```python
from course.code_examples.moe_routing_demo import demonstrate_routing_strategies

# 运行路由策略演示
demonstrate_routing_strategies()
```

## 🔧 核心特性

### 1. 滑动窗口注意力
- 减少长序列的计算复杂度
- 保持模型性能的同时提升效率
- 支持可配置的窗口大小

### 2. 分组查询注意力(GQA)
- 减少75%的KV缓存内存占用
- 保持模型表达能力
- 支持不同的键值头配置

### 3. 混合专家(MoE)
- 稀疏激活,每个token只使用部分专家
- 支持灵活的专家数量配置(4-16个专家)
- 内置负载均衡机制
- 专家专业化路由

### 4. RoPE位置编码
- 强大的相对位置编码
- 支持长序列外推
- 可配置的基础周期

### 5. 动态图支持
- 完整的MindSpore 2.6 PYNATIVE_MODE支持
- 灵活的模型调试和开发
- 实时性能监控

## 🧪 运行测试

### 单元测试
```bash
python test/validation_suite.py
```

### 完整验证
```bash
python test/final_validation.py
```

### 应用案例演示
```bash
# 智能文本摘要
python course/code_examples/smart_text_summarizer.py

# 代码生成助手
python course/code_examples/code_generation_assistant.py

# MoE路由演示
python course/code_examples/moe_routing_demo.py
```

## 📚 课程学习

本项目包含完整的学习材料,适合想要:
- 了解MoE技术原理和实现
- 学习MindSpore框架使用
- 掌握模型迁移技巧
- 开发AI应用案例

**开始学习:**
```bash
cd course
# 查看详细教程
cat README.md
# 查看快速入门
cat QUICK_START_GUIDE.md
# 查看目录结构
cat DIRECTORY_STRUCTURE.md
```

## 📊 性能对比

| 模型 | 参数量 | 激活参数 | 推理速度* | 内存使用 |
|------|--------|----------|-----------|----------|
| Mistral-7B | 7B | 7B | 1.0x | 14GB |
| Mixtral-8x7B | 47B | 13B | 0.8x | 26GB |

*相对速度,实际性能取决于硬件配置

## 🔧 配置选项

### MoE配置
```python
# 基础MoE配置
moe_config = MoeConfig(
num_experts=8, # 专家数量
num_experts_per_tok=2 # 每token使用的专家数
)

# 完整模型配置
config = MistralConfig(
vocab_size=32000,
hidden_size=4096,
num_hidden_layers=32,
num_attention_heads=32,
num_key_value_heads=8,
sliding_window=4096, # 滑动窗口大小
rope_theta=10000.0, # RoPE基础周期
moe=moe_config # MoE配置
)
```

### 性能优化
```python
# 内存优化
config.max_batch_size = 1
config.use_cache = True

# 推理优化
context.set_context(mode=context.PYNATIVE_MODE)
model.set_train(False)
```


### 开发环境设置
```bash
# 安装开发依赖
pip install -r requirements.txt

# 运行代码格式化
black .
flake8 .

# 运行测试
python test/validation_suite.py
```


Loading