模型评测-evalscope

大模型测评手段多样,旨在全面评估模型的性能和能力。以下是一些主要的测评方法和维度:

大模型评测方法分类表

评测维度 评测类型 具体方法/数据集 备注
基础能力 语言理解 GLUE, SuperGLUE, CLUE (中文) 包含中英文语境评测
知识掌握 MMLU (多学科), ARC (科学推理) 需覆盖STEM/人文领域
数学推理 GSM8K (小学数学), MATH (竞赛数学) 考察逐步推理能力
编程能力 HumanEval (代码生成), MBPP (Python) 需测试代码可执行性
安全对齐 偏见检测 BiasBench, StereoSet 性别/种族/文化偏见
毒性评估 ToxiGen, RealToxicityPrompts 仇恨/暴力内容识别
对抗攻击 AdvGLUE, ANLI (对抗性NLI) 鲁棒性压力测试
专项能力 多模态能力 VQA (视觉问答), ImageNet (图像分类) 跨模态理解评估
工具使用 ToolBench (API调用), WebArena (网页操作) 实际工具调用成功率
长文本处理 LRA (长范围建模), LongBench (中英文) 支持>8k tokens上下文
前沿趋势 认知能力 Theory of Mind测试, 创造性写作 高阶心智能力评估
持续学习 COVID-19时效知识测试, 灾难性遗忘检测 动态知识更新能力

一、evalscope介绍

1.1 概述

EvalScope 是魔搭社区(ModelScope)推出的大模型评测与性能基准测试框架,专注于为大型语言模型(LLM)提供多维度、自动化的评测能力。其核心目标是通过标准化测试流程和丰富的评测指标,帮助开发者全面评估模型能力、优化部署性能,并支持从学术研究到工业落地的完整生命周期管理。

9b455f261e9eae49107fa5dde4d43d69.png

1.2 核心功能

功能模块 详细说明 典型应用场景
多模型评测 支持 LLM、多模态 LLM、Embedding 模型、Reranker 模型等类型 模型选型对比、微调效果验证
多维度指标 - 能力评估:MMLU、C-Eval、GSM8K 等
- 性能压测:吞吐量、延迟、显存占用
- 稳定性:高并发容错
生产环境性能优化、硬件适配验证
RAG 评测 端到端评估检索增强生成流程,支持独立模块评估(命中率、NDCG)和端到端评估(忠实度、正确性) 多模态检索系统优化
长推理分析 检测模型思考过程中的过度思考(Overthinking)与思考不足(Underthinking)现象 长上下文模型优化
可视化工具 提供 Gradio 界面,支持多模型对比、问题回答详情查看 结果分析与汇报

1.3 优势与局限

优势 局限
- 开箱即用,内置 20+ 主流评测基准 - 依赖模型服务 API,无法直接评测本地私有模型
- 支持从单模型评测到生产级压力测试的全链路 - 部分高级功能需配置 Docker 环境
- 提供可视化报告与 Gradio 界面 - 对自定义数据集的格式要求严格

二、使用说明

安装部署

Docker

CPU环境镜像(python3.11):

modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py311-torch2.3.1-1.24.1
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py311-torch2.3.1-1.24.1
modelscope-registry.us-west-1.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py311-torch2.3.1-1.24.1

GPU环境镜像(python3.11):

modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.24.1
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.24.1
modelscope-registry.us-west-1.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py311-torch2.3.1-tf2.16.1-1.24.1

针对LLM和AIGC模型的运行环境

modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.4.0-py311-torch2.5.1-1.24.1-LLM
modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.4.0-py311-torch2.5.1-1.24.1-LLM
modelscope-registry.us-west-1.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.4.0-py311-torch2.5.1-1.24.1-LLM


本地安装

  • Python 3.8+
  • CUDA 11.7+
  • Docker(可选,用于离线环境)
安装命令
pip install evalscope                # 安装 Native backend (默认)
# 额外选项
pip install 'evalscope[opencompass]'   # 安装 OpenCompass backend
pip install 'evalscope[vlmeval]'       # 安装 VLMEvalKit backend
pip install 'evalscope[rag]'           # 安装 RAGEval backend
pip install 'evalscope[perf]'          # 安装 模型压测模块 依赖
pip install 'evalscope[app]'           # 安装 可视化 相关依赖
pip install 'evalscope[all]'           # 安装所有 backends (Native, OpenCompass, VLMEvalKit, RAGEval)

模型评测

evalscope eval \
 --model Qwen/Qwen2.5-0.5B-Instruct \
 --model-args revision=master,precision=torch.float16,device_map=auto \
 --generation-config do_sample=true,temperature=0.5 \
 --dataset-args '{"gsm8k": {"few_shot_num": 0, "few_shot_random": false}}' \
 --datasets gsm8k \
 --limit 10
  • 输出示例

    +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
    | Model Name            | Dataset Name   | Metric Name     | Category Name   | Subset Name   |   Num |   Score |
    +=======================+================+=================+=================+===============+=======+=========+
    | Qwen2.5-0.5B-Instruct | gsm8k          | AverageAccuracy | default         | main          |     5 |     0.4 |
    +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
    | Qwen2.5-0.5B-Instruct | ai2_arc        | AverageAccuracy | default         | ARC-Easy      |     5 |     0.8 |
    +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+
    | Qwen2.5-0.5B-Instruct | ai2_arc        | AverageAccuracy | default         | ARC-Challenge |     5 |     0.4 |
    +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+ 
    
  • 参数说明

参数名称 类型 默认值 说明
--model String - 被评测的模型名称。指定为本地路径或模型 ID。
--model-id String - 模型的别名,用于报告展示,默认为模型的最后一部分。
--model-args String - 模型加载参数,以逗号分隔,key=value形式,解析为字典。
--generation-config String - 生成参数,以逗号分隔,key=value形式,解析为字典。
--chat-template String None 模型推理模板,默认为 None,支持 Jinja 模板字符串。
--api-url String None 模型 API 端点,默认为 None。
--api-key String EMPTY 模型 API 端点密钥,默认为空。
--timeout Int/Float None 模型 API 请求超时时间,默认为 None。
--stream Bool False 是否使用流式传输,默认为 False。
--datasets String - 数据集名称,支持输入多个数据集,使用空格分隔。
--dataset-args String - 评测数据集的设置参数,以 JSON 字符串格式传入,解析为字典。
--dataset-dir String ~/.cache/modelscope/datasets 数据集下载路径,默认为缓存目录。
--dataset-hub String modelscope 数据集下载源,默认为 modelscope,可选 huggingface。
--limit Int - 每个数据集最大评测数据量,默认为全部评测。
--eval-batch-size Int 1 评测批量大小,默认为 1;在 eval-type=service 时,表示并发评测的请求数,默认为 8。
--eval-stage String all 评测阶段,可选 all, infer, review,默认为 all。
--eval-type String checkpoint 评测类型,可选 checkpoint, custom, service,默认为 checkpoint。
--eval-backend String Native 评测后端,可选Native, OpenCompass, VLMEvalKit, RAGEval, ThirdParty,默认为Native
--eval-config String - 使用非 Native 评测后端时需要传入的参数。
--judge-strategy String auto 使用裁判模型的策略,默认为 auto。
--judge-worker-num Int 1 裁判模型并发数,默认为 1。
--judge-model-args String - 设置裁判模型参数,以 JSON 字符串格式传入,解析为字典。
--work-dir String ./outputs/{timestamp} 模型评测输出路径,默认为当前目录下的 outputs 文件夹。
--use-cache String None 使用本地缓存的路径,默认为 None。
--seed Int 42 随机种子,默认为 42。
--debug Bool false 是否开启调试模式,默认为 false。
--dry-run Bool false 预检参数,不进行推理,只打印参数,默认为 false。



模型API服务评测

、evalscope eval  \
 --api-url http://10.1.30.50:40000/v1/chat/completions  \
 --model deepseek-r1-channel-int8 \
 --api-key EMPTY --eval-type service \
 --datasets gsm8k arc hellaswag humaneval --limit 10

针对数学问题、考试、常识推理、代码生成做的评测

+--------------------------+-----------+-----------------+------------------+-------+---------+---------+
| Model                    | Dataset   | Metric          | Subset           |   Num |   Score | Cat.0   |
+==========================+===========+=================+==================+=======+=========+=========+
| deepseek-r1-channel-int8 | arc       | AverageAccuracy | ARC-Easy         |    10 |     1   | default |
+--------------------------+-----------+-----------------+------------------+-------+---------+---------+
| deepseek-r1-channel-int8 | arc       | AverageAccuracy | ARC-Challenge    |    10 |     1   | default |
+--------------------------+-----------+-----------------+------------------+-------+---------+---------+
| deepseek-r1-channel-int8 | gsm8k     | AverageAccuracy | main             |    10 |     1   | default |
+--------------------------+-----------+-----------------+------------------+-------+---------+---------+
| deepseek-r1-channel-int8 | hellaswag | AverageAccuracy | default          |    10 |     0.8 | default |
+--------------------------+-----------+-----------------+------------------+-------+---------+---------+
| deepseek-r1-channel-int8 | humaneval | Pass@1          | openai_humaneval |    10 |     1   | default |
+--------------------------+-----------+-----------------+------------------+-------+---------+---------+ 
e06cda83f8b45828f770ddcc072f8ad7.png
1ea004ba21a69855638d130922c18653.png
0515eaff164e0a66ab35ab1e824ff980.png

离线评测

# 数据集下载或者从modelscope下载
wget https://modelscope.oss-cn-beijing.aliyuncs.com/open_data/benchmark/data.zip
unzip data.zip
git lfs install
git clone https://www.modelscope.cn/datasets/modelscope/MMLU-Pro.git

# 下载模型
git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen2.5-0.5B-Instruct.git

执行评测任务

evalscope eval \
 --model /path/to/workdir/Qwen2.5-0.5B-Instruct \
 --datasets arc \
 --dataset-args '{"arc": {"local_path": "/path/to/workdir/data/arc"}}' \
 --limit 10


自定义评测数据集

大语言模型仅支持选择题和问答题,同时对格式有要求

选择题MCQ:适合用户是选择题的场景,评测指标为准确率(accuracy)。格式如下:

mcq/
├── example_dev.csv  # (可选)文件名组成为`{subset_name}_dev.csv`,用于fewshot评测
└── example_val.csv  # 文件名组成为`{subset_name}_val.csv`,用于实际评测的数据

其中csv文件需要为下面的格式:

id,question,A,B,C,D,answer
1,通常来说,组成动物蛋白质的氨基酸有____,4种,22种,20种,19种,C
2,血液内存在的下列物质中,不属于代谢终产物的是____。,尿素,尿酸,丙酮酸,二氧化碳,C

id是序号(可选字段)、question是问题、A, B, C, D等是可选项,最大支持10个选项、answer是正确选项


问答题格式(QA):适合用户是问答题的场景,评测指标是ROUGE和BLEU。

qa/
└── example.jsonl
{"system": "你是一位地理学家", "query": "中国的首都是哪里?", "response": "中国的首都是北京"}
{"query": "世界上最高的山是哪座山?", "response": "是珠穆朗玛峰"}
{"query": "为什么北极见不到企鹅?", "response": "因为企鹅大多生活在南极"}

system是系统prompt(可选字段)、query是问题(必须)、response是正确回答(必须)

脚本执行命令:(可转换命令执行)

from evalscope import TaskConfig, run_task

task_cfg = TaskConfig(
    model='qwen/Qwen2-0.5B-Instruct',
    datasets=['general_qa'],  # 数据格式,选择题格式固定为 'general_qa'
    dataset_args={
        'general_qa': {
            "local_path": "custom_eval/text/qa",  # 自定义数据集路径
            "subset_list": [
                "example"       # 评测数据集名称,上述 *.jsonl 中的 *
            ]
        }
    },
)

run_task(task_cfg=task_cfg)


推理性能压测

# 在线推理压测
evalscope perf --parallel 20 \
 --url http://10.1.30.50:40000/v1/chat/completions \
 --model deepseek-r1-channel-int8 \
 --log-every-n-query 10 --connect-timeout 600 \
 --read-timeout 600 --dataset random \
 --tokenizer-path meituan/DeepSeek-R1-Channel-INT8 \
 --max-prompt-length 1048 \
 --min-prompt-length 512 --stream --api openai  -n 500
 
# 使用prompt
evalscope perf \
 --url 'http://127.0.0.1:8000/v1/chat/completions' \
 --parallel 2 \
 --model 'qwen2.5' \
 --log-every-n-query 10 \
 --number 20 \
 --api openai \
 --temperature 0.9 \
 --max-tokens 1024 \
 --prompt '写一个科幻小说,请开始你的表演'

# 本地文件作为prompt
evalscope perf \
 --url 'http://127.0.0.1:8000/v1/chat/completions' \
 --parallel 2 \
 --model 'qwen2.5' \
 --log-every-n-query 10 \
 --number 20 \
 --api openai \
 --temperature 0.9 \
 --max-tokens 1024 \
 --prompt @prompt.txt
  • 输出示例
Benchmarking summary: 
+-----------------------------------+-----------------------------------------------------+
| Key                               | Value                                               |
+===================================+=====================================================+
| Time taken for tests (s)          | 10.739                                              |
+-----------------------------------+-----------------------------------------------------+
| Number of concurrency             | 1                                                   |
+-----------------------------------+-----------------------------------------------------+
| Total requests                    | 15                                                  |
+-----------------------------------+-----------------------------------------------------+
| Succeed requests                  | 15                                                  |
+-----------------------------------+-----------------------------------------------------+
| Failed requests                   | 0                                                   |
+-----------------------------------+-----------------------------------------------------+
| Throughput(average tokens/s)      | 324.059                                             |
+-----------------------------------+-----------------------------------------------------+
| Average QPS                       | 1.397                                               |
+-----------------------------------+-----------------------------------------------------+
| Average latency (s)               | 0.696                                               |
+-----------------------------------+-----------------------------------------------------+
| Average time to first token (s)   | 0.029                                               |
+-----------------------------------+-----------------------------------------------------+
| Average time per output token (s) | 0.00309                                             |
+-----------------------------------+-----------------------------------------------------+
| Average input tokens per request  | 50.133                                              |
+-----------------------------------+-----------------------------------------------------+
| Average output tokens per request | 232.0                                               |
+-----------------------------------+-----------------------------------------------------+
| Average package latency (s)       | 0.003                                               |
+-----------------------------------+-----------------------------------------------------+
| Average package per request       | 232.0                                               |
+-----------------------------------+-----------------------------------------------------+
| Expected number of requests       | 15                                                  |
+-----------------------------------+-----------------------------------------------------+
| Result DB path                    | ./outputs/20250416_194204/qwen2.5/benchmark_data.db |
+-----------------------------------+-----------------------------------------------------+

Percentile results: 
+------------+----------+----------+-------------+--------------+---------------+----------------------+
| Percentile | TTFT (s) | TPOT (s) | Latency (s) | Input tokens | Output tokens | Throughput(tokens/s) |
+------------+----------+----------+-------------+--------------+---------------+----------------------+
|    10%     |  0.0202  |  0.0027  |   0.1846    |      41      |      50       |       270.8324       |
|    25%     |  0.0209  |  0.0028  |   0.2861    |      44      |      83       |       290.0714       |
|    50%     |  0.0233  |  0.0028  |   0.7293    |      49      |      250      |       335.644        |
|    66%     |  0.0267  |  0.0029  |   0.9052    |      50      |      308      |       340.2603       |
|    75%     |  0.0437  |  0.0029  |   0.9683    |      53      |      325      |       341.947        |
|    80%     |  0.0438  |  0.003   |   1.0799    |      58      |      376      |       342.7985       |
|    90%     |  0.0439  |  0.0032  |   1.2474    |      62      |      424      |       345.5268       |
|    95%     |  0.0463  |  0.0033  |   1.3038    |      66      |      431      |       348.1648       |
|    98%     |  0.0463  |  0.0035  |   1.3038    |      66      |      431      |       348.1648       |
|    99%     |  0.0463  |  0.0037  |   1.3038    |      66      |      431      |       348.1648       |
+------------+----------+----------+-------------+--------------+---------------+----------------------+
  • 指标说明
指标名称 说明
Time taken for tests (s) 测试所用的时间(秒)。
Number of concurrency 并发数量。
Total requests 总请求数。
Succeed requests 成功的请求数。
Failed requests 失败的请求数。
Throughput (average tokens/s) 吞吐量(平均每秒处理的 token 数)。
Average QPS 平均每秒请求数(Queries Per Second)。
Average latency (s) 平均延迟时间(秒)。
Average time to first token (s) 平均首次 token 时间(秒)。
Average time per output token (s) 平均每个输出 token 的时间(秒)。
Average input tokens per request 每个请求的平均输入 token 数。
Average output tokens per request 每个请求的平均输出 token 数。
Average package latency (s) 平均包延迟时间(秒)。
Average package per request 每个请求的平均包数。
Expected number of requests 预期的请求数。
Result DB path 结果数据库路径。
Percentile 数据被分为 100 个相等部分,第 n 百分位表示 n% 的数据点在此值之下。
TTFT (s) Time to First Token,首次生成 token 的时间(秒)。
TPOT (s) Time Per Output Token,生成每个输出 token 的时间(秒)。
Latency (s) 延迟时间,指请求到响应之间的时间(秒)。
Input tokens 输入的 token 数量。
Output tokens 输出的 token 数量。
Throughput (tokens/s) 吞吐量,指每秒处理 token 的数量。
  • 参数说明
参数名称 类型 默认值 说明
--model String - 测试模型名称。可以是模型文件路径或模型 ID。
--url String - 指定 API 地址。仅在使用 openai 或 dashscope 时需要。
--name String - WandB 数据库结果名称,默认为: {model_name}_{current_time}
--api String - 指定服务 API,目前支持[openai|dashscope local local_vllm]
--port Int 8877 本地推理服务端口,默认为 8877,仅对 local 和 local_vllm 有效。
--attn-implementation String None Attention 实现方式,可选[flash_attention_2|eager sdpa],仅在api为local时有效
--api-key String - API 密钥,可选。
--debug Bool False 输出调试信息,默认为 False。
--connect-timeout Int 600 网络连接超时,默认为 600秒。
--read-timeout Int 600 网络读取超时,默认为 600秒。
--headers String - 额外的 HTTP 头,格式为 key1=value1 key2=value2,用于每个查询。
--number Int 1000 发出的请求总数量,默认为 None,表示基于数据集数量发送请求。
--parallel Int 1 并发请求的数量,默认为 1。
--rate Float -1 每秒生成的请求数量,默认为 -1,表示所有请求将在时间 0 生成,没有间隔。
--log-every-n-query Int 10 每 n 个查询记录日志,默认为 10。
--stream Bool False 使用SSE流输出,默认为False。需要设置stream参数以测量Time to First Token (TTFT)指标
--max-prompt-length Int 131072 最大输入 prompt 长度,默认为 131072,大于该值时,将丢弃 prompt。
--min-prompt-length Int 0 最小输入 prompt 长度,默认为 0,小于该值时,将丢弃 prompt。
--prefix-length Int 0 prompt 的前缀长度,默认为 0,仅对于 random 数据集有效。
--prompt String - 指定请求 prompt,一个字符串或本地文件,使用优先级高于 dataset。
--query-template String - 指定查询模板,一个 JSON 字符串或本地文件。
--dataset String - 可以指定数据集模式,如 openqa、longalpaca、flickr8k、line_by_line、random。
--dataset-path String - 数据集文件的路径,与数据集结合使用。
--tokenizer-path String - 指定分词器权重路径,用于计算输入和输出的 token 数量。
--frequency-penalty Float - frequency_penalty 值。
--logprobs Float - 对数概率。
--max-tokens Int - 可以生成的最大 token 数量。
--min-tokens Int - 生成的最少 token 数量,不是所有模型服务都支持该参数,请查看对应 API 文档。
--n-choices Int - 生成的补全选择数量。
--seed Int 42 随机种子,默认为 42。
--stop String - 停止生成的 tokens。
--stop-token-ids String - 设置停止生成的 token 的 ID。
--temperature Float - 采样温度。
--top-p Float - top_p 采样。
--top-k Int - top_k 采样。
--wandb-api-key String - WandB API 密钥,如果设置,则度量将保存到 WandB。
--outputs-dir String ./outputs 输出文件路径,默认为 ./outputs。
0d8228060b40ef97d19230675e01c8ae.png

速度基准测试

模型在单个请求下的标准速度,类似Qwen官方报告的速度基准


b61696ccdde8d3a73b877cea3363d188.png
evalscope perf \
 --parallel 1 \
 --url http://10.1.30.50:40000/v1/completions \
 --model deepseek-r1-channel-int8 \
 --log-every-n-query 1 \
 --connect-timeout 6000 \
 --read-timeout 6000 \
 --max-tokens 2048 \
 --min-tokens 2048 \
 --api openai \
 --dataset speed_benchmark \
 --debug

可以使用 --dataset [speed_benchmark|speed_benchmark_long]来指定速度测试的数据集:

speed_benchmark: 测试[1, 6144, 14336, 30720]长度的prompt,固定输出2048个token。

speed_benchmark_long: 测试[63488, 129024]长度的prompt,固定输出2048个token。

RAG评测

527bb83d41ce4c320a116b81770a2c05.png


two_stage_task_cfg = {
    "eval_backend": "RAGEval",
    "eval_config": {
        "tool": "MTEB", # 评测工具
        "model": [
            {
                "model_name_or_path": "AI-ModelScope/m3e-base", # 模型名称或路径,支持从modelscope仓库自动下载模型
                "is_cross_encoder": False, # 模型是否为交叉编码器,默认为 False;reranking模型需设置为True
                "max_seq_length": 512, # 最大序列长度,默认为 512
                "model_kwargs": {"torch_dtype": "auto"}, # 模型的关键字参数,默认值为 {"torch_dtype": "auto"}
                "encode_kwargs": {
                    "batch_size": 64,
                },
            },
            {
                "model_name_or_path": "OpenBMB/MiniCPM-Reranker",
                "is_cross_encoder": True,
                "max_seq_length": 512,
                "prompt": "为这个问题生成一个检索用的表示", # 用于检索任务在模型前的提示,默认为空字符串
                "model_kwargs": {"torch_dtype": "auto"},
                "encode_kwargs": {
                    "batch_size": 32,
                },
            },
        ],
        "eval": {
            "tasks": ["T2Retrieval"], # 任务名称,可选https://evalscope.readthedocs.io/zh-cn/latest/user_guides/backend/rageval_backend/mteb.html#id2
            "verbosity": 2, # 选取前 K 个结果,检索任务使用
            "output_folder": "outputs",
            "overwrite_results": True,
            "top_k": 5,
            "limits": 100,
        },
    },
}
from evalscope.run import run_task

run_task(task_cfg=two_stage_task_cfg)


ms-swift集成

ms-swift是魔搭社区提供的大模型与多模态大模型训练部署框架,现已支持450+大模型与150+多模态大模型的训练(预训练、微调、人类对齐)、推理、评测、量化与部署。模型开发者可以在ms-swift框架中一站式完成围绕大模型的各类需求。目前ms-swift的主要能力包含:

🍎 模型类型:支持450+纯文本大模型、150+多模态大模型以及All-to-All全模态模型、序列分类模型、Embedding模型训练到部署全流程。

数据集类型:内置150+预训练、微调、人类对齐、多模态等各种类型的数据集,并支持自定义数据集。

硬件支持:CPU、RTX系列、T4/V100、A10/A100/H100、Ascend NPU、MPS等。

🍊 轻量训练:支持了LoRA、QLoRA、DoRA、LoRA+、ReFT、RS-LoRA、LLaMAPro、Adapter、GaLore、Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。

分布式训练:支持分布式数据并行(DDP)、device_map简易模型并行、DeepSpeed ZeRO2 ZeRO3、FSDP等分布式训练技术。

量化训练:支持对BNB、AWQ、GPTQ、AQLM、HQQ、EETQ量化模型进行训练。

RLHF训练:支持纯文本大模型和多模态大模型的DPO、GRPO、RM、PPO、KTO、CPO、SimPO、ORPO等人类对齐训练方法。

🍓 多模态训练:支持对图像、视频和语音不同模态模型进行训练,支持VQA、Caption、OCR、Grounding任务的训练。

界面训练:以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路。

插件化与拓展:支持自定义模型和数据集拓展,支持对loss、metric、trainer、loss-scale、callback、optimizer等组件进行自定义。

🍉 工具箱能力:除了对大模型和多模态大模型的训练支持外,还支持其推理、评测、量化和部署全流程。

推理加速:支持PyTorch、vLLM、LmDeploy推理加速引擎,并提供OpenAI接口,为推理、部署和评测模块提供加速。

模型评测:以EvalScope作为评测后端,支持100+评测数据集对纯文本和多模态模型进行评测。

模型量化:支持AWQ、GPTQ和BNB的量化导出,导出的模型支持使用vLLM/LmDeploy推理加速,并支持继续训练。


常见问题

问题现象 解决方案
CUDA out of memory 减少 --max-tokens 或启用 --tensor-parallel-size 分片
响应延迟波动大 检查 --connect-timeout--read-timeout 参数,优化网络配置
自定义数据集解析失败 确保 JSONL 格式符合规范,使用 evaluator.inspect_dataset() 预检查

LLM全链路最佳实践

modelscope 提供模型、数据集下载能力

data-juicer 提供数据集处理能力

ms-swift 提供模型训练、推理能力

evalscope 提供模型评测能力


百炼模型评测: https://help.aliyun.com/zh/model-studio/model-evaluation-overview

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容