# telellm
**Repository Path**: modelers/telellm
## Basic Information
- **Project Name**: telellm
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 17
- **Forks**: 0
- **Created**: 2025-01-07
- **Last Updated**: 2025-07-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> **⭐️ 收藏项目 ,以便您在第一时间获取 TeleLLM 的最新动态~**
---
## 📣 最新进展
- **\[2024.11.28\]** 新增 `ADD_DEFAULT_SYSTEM_ROLE` 环境变量(默认值:`True`);同步`torch_dtype` 与模型文件设置;新增对Telechat量化模型、Telechat2、Moss-Moon-003-SFT、BELLE-7B-2M、Ziya-LLaMA-13B-v1模型支持(nvidia),新增测试用例校验🚩🚩🚩
- **\[2024.11.18\]** 针对MindIE RC3进行适配升级,增加了对Llama3.1-8B、70B、Telechat-1B、7B、12B等模型的支持🚩🚩🚩
- **\[2024.10.12\]** 增加了对华为Ascend的支持,推理服务支持用户自定义参数的输入,默认参数更新,上下文长度提升至8k,输出2k,欢迎尝试! 🚩🚩🚩
(持续更新中......)
---
# 简介
TeleLLM 由天翼云智算团队开发,是一个大模型推理项目生成脚手架,涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。其主要特点如下:
- 支持Nvidia和Ascend LLM推理。
- 支持接口文档、功能测试文档、性能测试文档的自动生成。
- 支持对MindIEServer的推理。
- 支持大模型数据集评测。
- 对齐Openai接口,支持图生文、文生图和图生图多模态模型推理。
- 支持部署文档自动生成。
- 支持大模型量化、LMDeploy视觉类模型推理和Function call
- (持续更新中......)
# 快速开始
## 🛠️ 安装指南
若您使用cuda安装TeleLLM,您可以参考该安装说明:[使用cuda安装](docs/Installation-cuda.md)
若您使用npu安装TeleLLM,您可以参考该安装说明:[使用npu安装](docs/Installation-npu.md)
## 📂 数据准备
### 提前离线下载
TeleLLM支持使用本地数据集进行评测,数据集的下载可以通过以下命令完成:
**待补充是否提供离线数据集包......**
### 使用 ModelScope 自动下载
您也可以使用[ModelScope](https://www.modelscope.cn/home)来加载数据集:
环境准备:
```bash
pip install modelscope
export DATASET_SOURCE=ModelScope
```
# 💡 基本用法
## 1.服务调用
进入已部署TeleLLM的容器后,您可以执行下面指令启动服务
```bash
telellm serve --model /model --model_name Qwen2-7B-Instruct -p 8899
```
目前telellm serve支持 ``--model``、``--tensor_parallel_size``等15个参数的传入 ,具体使用参考服务功能参数说明:[Serve-args](docs/Serve-args.md)
## 2. 模型功能&性能测试
> 服务部署完成后,执行telellm test可进行服务测试,可在 `当前目录下`生成测试报告。(功能测试报告、性能测试报告)
- 帮助:
```bash
telellm test --help
```
- 参数说明:
| 参数 | 简称 | 类型 | 默认值 | 描述 |
| -------------- | ---- | ----- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --test_type | -tt | str | both | 测试类型。
1. functional
2. performance
3. both |
| --service_host | -sh | str | localhost | 服务主机 |
| --service_port | -sp | int | 8899 | 服务端口 |
| --service_name | -sn | str | llmservice | 服务名称 |
| --model_name | -mn | str | —— | 模型名称 |
| --concurrency | -c | [int] | [1] | 并发数(**仅性能测试**使用) |
| --seq_len | -s | [int] | [25, 100, 400, 800] | 测试文本长度(**仅性能测试**使用)
25 length > 32 token
100 length > 128 token ``400 length > 512 token ``800 length > 1024 token |
---
- 举例:
```bash
telellm test -tt both -sh localhost -sp 8899 -sn nvidia-qwen-infer-svc -mn Qwen-7B-Chat -c 1 -c 2 -c 4
```
- `-tt both`代表生成功能测试报告和性能测试报告;`-tt functional`代表仅生成功能测试;`-tt performance`代码仅生成性能测试。
- `-c 1 -c 2 -c 4` 代表并发数为[1,2,4],可调整。
- `-s 25 -s 100 -s 400 -s 800`代表文本长度为[25, 100, 400, 800],可调整。
## 3. 模型精度评测
执行telellm eval进行模型评测,可在 `当前目录下`生成评测结果文件夹 `eval_chat_outs`和 `评测结果报告文件`。
- 帮助:
```bash
telellm eval --help
```
- 参数说明:
| 参数 | 简称 | 类型 | 默认值 | 描述 |
| -------------------- | ---- | ----- | --------- | ----------------------------------------------------------------------------------- |
| --service_host | -sh | str | localhost | 服务主机 |
| --service_port | -sp | int | 8899 | 服务端口 |
| --model_name | -mn | str | —— | 模型名称 |
| --dataset | -ds | str | mmlu | 需要评测的数据集
1. mmlu
2. ceval
3. humaneval
4. gsm8k |
| --type | -t | str | val | 数据集类型
1. val
2. test |
| --overwrite | -o | | False | 是否覆盖存在的结果 |
| --num_threads | -nt | int | 5 | 最大执行的线程数 |
| --temperature | -tt | float | 1.0 | 请求参数temperature |
| --top_p | -tp | float | 0.001 | 请求参数top_p |
| --top_k | -tk | int | 1 | 请求参数top_k |
| --repetition_penalty | -rp | float | 1.0 | 请求参数repetition_penalty |
| --enable_rp | -erp | | False | 是否使用repetition_penalty参数(临时) |
---
- 举例:
```bash
# 使用存在的结果
telellm eval -sh localhost -sp 8899 -mn llama2-7b-chat -ds mmlu -t val -nt 5
# 覆盖存在的结果
telellm eval -sh localhost -sp 8899 -mn llama2-7b-chat -ds mmlu -t val -nt 5 -o
```
- `-ds mmlu`代表使用 `MMLU`数据集进行评测,可选的还有 `ceval`/`humaneval`/`gsm8k`。
- `-t val`代表使用数据集的val验证集进行评测(部分数据集没有 `val`,humaneval/gsm8k则无需填写此项),可选的还有 `test`测试集。
- `-nt 5`代表最大使用多少个线程进行评测。
- `-o`代表覆盖存在的中间结果,重新模型评测,**不填则使用上次中间结果继续评测**。
- `-erp`代表传入的repetition_penalty参数有效(临时,适配新旧版本)
> Note:
>
> 1. (**可选**,评测请求时已做top_k/temperature/top_p/repetition_penalty限制)模型评测时需要 开启贪心解码:do_sample=False
> 2. c-eval test测试集结果需要在网站提交结果获取评分:https://cevalbenchmark.com/static/user_interface.html
数据集介绍:
| | mmlu | c-eval | human-eval | gsm8k |
| ---- | ------------------------------------------------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------ |
| 类型 | 通用领域英文数据集 | 通用领域中文数据集 | 代码 | 数学 |
| 介绍 | 涵盖57项任务,包括基础数学、美国历史、计算机科学、法律等领域 | 涉及4个学科大类,52个学科小类,分别对应四个难度等级(初中,高中,大学和专业) | 包含了164个精心设计的编程任务,每个任务都包含四个关键组成部分 | 包含高质量语言多样化小学数学应用题的数据集,这些问题都是由人类写手创造的 |
| 分类 | 1. val验证集:1540个问题``2. test测试集:14079个问题 | 1.val验证集:1346个问题``2. test测试集:12342个问题 | test测试集:164个编程任务 | test测试集 :1319个小学数学题 |
---
类别介绍:
- STEM/科学、技术、工程和数学:包含计算机、电气工程、化学、数学、物理等多个学科
- Social Science/社会科学:包含政治、地理、教育学、经济学、工商管理等多个学科
- Humanities/人文科学:包含法律、艺术、逻辑学、语文、历史等多个学科
- Other/其他:其他学科的汇总,包含环境、消防、税务、体育、医学等多个学科
## 4.量化
在开始量化前,我们需要一些前置的量化参数说明:[Quant-args](docs/Quant-args.md)
量化的配置支持通过配置文件或者命令行输入参数两种方式,推荐使用配置文件。
如果使用配置文件,使用如下命令将自动生成配置文件(quant_config.json)和默认校准数据集(calib.jsonl):
```shell
telellm quant_config
```
当然,也可以使用命令行输入参数(不推荐)
```shell
telellm quant -mp /model_in -sd /model_out -pf true -acc false
```
量化结束后,会在当前目录生成量化报告(quant_result.json)
# 🏛 License
本框架使用[Apache License (Version 2.0)](LICENSE).进行许可。模型和数据集请查看原资源页面并遵守对应License。
# ☁️ 模型支持
TeleLLM支持多种大语言模型和多模态模型,以下是TeleLLM当前支持的模型列表:[Supported_models](docs/Supported_models.md)