Skip to content

Latest commit

 

History

History
334 lines (260 loc) · 6.86 KB

File metadata and controls

334 lines (260 loc) · 6.86 KB

Merging-EVAL 集成文档

本文档详细说明如何将 Merging-EVAL 项目集成到现有的 Fusion Platform 中,实现完整的模型融合功能。

架构概述

集成架构

前端界面 (React) → 后端API (FastAPI) → Worker系统 → Merging-EVAL执行

技术栈

  • 前端: React + TypeScript
  • 后端: FastAPI + Python
  • Worker: Python + 分布式任务调度
  • 模型融合: Merging-EVAL (Task Arithmetic, TIES-Merging等)

核心组件

1. 领域层 (Domain Layer)

实体定义

  • MergingEVALTask: Merging-EVAL任务实体
  • MergingEVALParameters: 融合参数配置
  • MergingEVALMethod: 融合方法枚举
  • GPUSelection: GPU选择策略

业务规则

  • 任务参数验证
  • GPU资源自动选择
  • 模型架构一致性检查

2. 应用层 (Application Layer)

服务定义

  • MergingEVALService: 核心业务服务
  • 任务创建、查询、状态管理
  • 参数映射和验证

3. 基础设施层 (Infrastructure Layer)

仓库实现

  • MergingEVALRepository: 任务持久化存储
  • 支持内存存储(可扩展为数据库)

API接口

  • merging_eval_routes.py: REST API路由
  • 完整的CRUD操作
  • 任务状态管理

4. Worker执行层

任务执行器

  • MergingEVALTaskHandler: 专用任务处理器
  • GPUResourceManager: GPU资源管理
  • 集成到现有TaskExecutor框架

实现细节

任务执行流程

  1. 前端创建任务

    // 前端调用API创建任务
    POST /api/merging-eval/tasks
    {
      "task_name": "模型融合任务",
      "merge_method": "task_arithmetic",
      "base_model_path": "/path/to/base/model",
      "models_to_merge": ["/path/to/model1", "/path/to/model2"],
      "output_dir": "/path/to/output",
      "scaling_coefficient": 0.2,
      "use_gpu": true
    }
  2. 后端处理

    • 参数验证和任务创建
    • 保存到仓库
    • 返回任务ID
  3. Worker执行

    • 轮询获取待执行任务
    • 使用MergingEVALTaskHandler执行
    • 设置GPU环境变量
    • 执行Merging-EVAL命令
  4. 结果返回

    • 执行完成后更新任务状态
    • 返回融合后的模型路径
    • 记录执行时间和资源使用

GPU资源管理

自动GPU选择

# 根据模型大小自动选择GPU
gpu_manager = GPUResourceManager()
gpu_device = gpu_manager.select_gpu_for_task("13B", "auto")
# 返回: 1 (第二个GPU设备)

GPU选择策略

  • 大模型 (70B, 22B): 使用GPU 0 (最高性能)
  • 中等模型 (13B, 14B): 使用GPU 1
  • 小模型: 使用GPU 2或其他可用设备

环境配置

必需的环境变量

# 协议缓冲区配置
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python

# GPU设备选择
export CUDA_VISIBLE_DEVICES=0

Merging-EVAL命令

python3 src/merge/main_merging.py \
  --merge_method task_arithmetic \
  --output_dir /path/to/output \
  --base_model /path/to/base/model \
  --models_to_merge "/path/to/model1,/path/to/model2" \
  --scaling_coefficient 0.2 \
  --use_gpu

API接口文档

创建任务

POST /api/merging-eval/tasks
Content-Type: application/json

{
  "task_name": "string",
  "merge_method": "task_arithmetic|ties_merging|dare_ties|slerp|linear",
  "base_model_path": "string",
  "models_to_merge": ["string"],
  "output_dir": "string",
  "scaling_coefficient": 0.2,
  "use_gpu": true,
  "gpu_device": 0
}

查询任务状态

GET /api/merging-eval/tasks/{task_id}

列出任务

GET /api/merging-eval/tasks?status=running

更新任务状态 (Worker调用)

PUT /api/merging-eval/tasks/{task_id}/status
Content-Type: application/json

{
  "status": "running|completed|failed",
  "progress": 0.5,
  "error_message": "string"
}

部署和配置

1. 环境准备

安装依赖

# 安装Merging-EVAL项目依赖
cd /path/to/Merging-EVAL
pip install -r requirements.txt

# 安装Fusion Platform依赖
cd /path/to/fusion-platform-web
pip install -r requirements.txt

GPU环境

# 验证GPU可用性
nvidia-smi

# 安装PyTorch (如果使用GPU)
pip install torch torchvision torchaudio

2. 配置路径

模型存储路径

# 在配置文件中设置模型存储路径
MODEL_STORAGE_PATH = "/path/to/models"
OUTPUT_STORAGE_PATH = "/path/to/output"

Merging-EVAL项目路径

# 设置Merging-EVAL项目路径
MERGING_EVAL_PATH = "/path/to/Merging-EVAL"

3. 启动服务

启动后端服务

cd /path/to/fusion-platform-web/backend
uvicorn main:app --host 0.0.0.0 --port 8000

启动Worker

cd /path/to/fusion-platform-web/worker_client
python worker.py

测试和验证

单元测试

# 测试领域实体
pytest tests/domain/test_merging_eval_entities.py

# 测试服务层
pytest tests/application/test_merging_eval_service.py

# 测试Worker执行器
pytest tests/worker/test_merging_eval_executor.py

集成测试

# 测试完整流程
pytest tests/integration/test_merging_eval_workflow.py

API测试

# 使用curl测试API
curl -X POST http://localhost:8000/api/merging-eval/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "task_name": "测试任务",
    "merge_method": "task_arithmetic",
    "base_model_path": "/test/base/model",
    "models_to_merge": ["/test/model1", "/test/model2"],
    "output_dir": "/test/output"
  }'

故障排除

常见问题

1. GPU不可用

# 检查GPU状态
nvidia-smi

# 检查CUDA安装
python -c "import torch; print(torch.cuda.is_available())"

2. 模型路径错误

  • 确保模型文件存在且可访问
  • 检查文件权限
  • 验证模型格式

3. 内存不足

  • 减少同时运行的任务数量
  • 使用更小的模型
  • 增加GPU内存

4. 协议缓冲区错误

# 设置环境变量
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python

性能优化

1. 资源管理

  • 合理分配GPU资源
  • 设置任务并发限制
  • 监控内存使用

2. 缓存优化

  • 缓存模型加载
  • 复用已加载的模型
  • 优化磁盘I/O

3. 并行处理

  • 支持多任务并行执行
  • 使用多GPU并行
  • 优化任务调度

扩展性考虑

1. 支持更多融合方法

  • 可以轻松添加新的融合方法
  • 扩展MergingEVALMethod枚举
  • 添加对应的参数配置

2. 分布式执行

  • 支持多Worker节点
  • 负载均衡
  • 故障转移

3. 监控和日志

  • 集成Prometheus监控
  • 详细的执行日志
  • 性能指标收集

总结

通过本集成方案,Merging-EVAL项目已经成功集成到现有的Fusion Platform架构中,实现了:

  • ✅ 完整的DDD架构集成
  • ✅ 分布式任务调度
  • ✅ GPU资源自动管理
  • ✅ 完整的API接口
  • ✅ 前端界面集成
  • ✅ 错误处理和监控

这个方案充分利用了现有项目的成熟架构,同时保持了良好的扩展性和可维护性。