# BlueLM **Repository Path**: aigc-bluelm/BlueLM ## Basic Information - **Project Name**: BlueLM - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-15 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
🤗 Hugging Face • 👾 ModelScope • 🤖 wisemodel • 📜 LICENSE • 🎯 vivo Developers • 🗨 WeChat
# 目录 - [📔 模型介绍](#模型介绍) - [📊 评测结果](#评测结果) - [🚀 推理部署](#推理部署) - [⚒ 模型微调](#模型微调) - [📚 声明、协议、引用](#声明协议引用) - [📠 联系我们](#联系我们) # 新闻 - 2024年3月25日更新 BlueLM-7B-Chat-32K 模型参数,支持 function calling 能力。我们在 [api_server.py](openai_api_demo/api_server.py) 中提供了 OpenAI 格式的 API。更新 BlueLM-7B-Chat-32K-AWQ 和 BlueLM-7B-Chat-32K-GPTQ 模型。 # 模型介绍 BlueLM 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型,本次发布包含 7B 基础 (base) 模型和 7B 对话 (chat) 模型,同时我们开源了支持 **32K** 的长文本基础 (base) 模型和对话 (chat) 模型。 - **更大量的优质数据**:高质量语料库进行训练,规模达到了 **2.6 万亿** 的 token 数,该语料库包含中文、英文以及少量日韩数据; - **更优的效果**:其中 BlueLM-7B-Chat 在 **C-Eval** 和 **CMMLU** 上均取得领先结果,对比同尺寸开源模型中具有较强的竞争力; - **长文本支持**:BlueLM-7B-Base-32K 和 BlueLM-7B-Chat-32K 均支持 **32K** 长文本,在保持基础能力相当情况下,能够支持更长上下文理解; - **协议说明**:BlueLM 系列欢迎开发者进行学术研究和商业应用; 本次发布基座模型下载链接见: | | 基座模型 | 对齐模型 | 量化模型 | |:-------|:---------------------------------------------------------------------------|:---------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 7B-2K | 🤗 [BlueLM-7B-Base](https://huggingface.co/vivo-ai/BlueLM-7B-Base) | 🤗 [BlueLM-7B-Chat](https://huggingface.co/vivo-ai/BlueLM-7B-Chat) | 🤗 [BlueLM-7B-Chat-4bits](https://huggingface.co/vivo-ai/BlueLM-7B-Chat-4bits) | | 7B-32K | 🤗 [BlueLM-7B-Base-32K](https://huggingface.co/vivo-ai/BlueLM-7B-Base-32K) | 🤗 [BlueLM-7B-Chat-32K](https://huggingface.co/vivo-ai/BlueLM-7B-Chat-32K) | 🤗 [BlueLM-7B-Chat-32K-AWQ](https://huggingface.co/vivo-ai/BlueLM-7B-Chat-32K-AWQ) / [BlueLM-7B-Chat-32K-GPTQ](https://huggingface.co/vivo-ai/BlueLM-7B-Chat-32K-GPTQ) | 欢迎阅读我们的技术报告[BlueLM: An Open Multilingual 7B Language Model](https://github.com/vivo-ai-lab/BlueLM/blob/main/BlueLM_technical_report.pdf)! 我们后续将开源 13B 模型和支持多模态的 7B-vl 模型,还请期待! # 评测结果 为了保证模型评测的一致性,我们采用 [OpenCompass](https://opencompass.org.cn/leaderboard-llm) 进行相关榜单的评测。我们分别在 C-Eval、MMLU、CMMLU、GaoKao、AGIEval、BBH、GSM8K、MATH 和 HumanEval 榜单对 BlueLM 的通用能力、数学能力和代码能力进行了测试。 ## 测评榜单 - [C-Eval](https://cevalbenchmark.com/index.html) 是一个全面的中文基础模型评测数据集,它包含了 13948 个多项选择题,涵盖了 52 个学科和四个难度级别。我们使用了 few shot 的方法来进行测试。 - [MMLU](https://arxiv.org/abs/2009.03300) 是一个包含了 57 个子任务的英文评测数据集,涵盖了初等数学、美国历史、计算机科学、法律等,难度覆盖高中水平到专家水平,有效地衡量了人文、社科和理工等多个大类的综合知识能力。我们使用了 few shot 的方法来进行测试。 - [CMMLU](https://github.com/haonan-li/CMMLU) 是一个包含了 67 个主题的中文评测数据集,涉及自然科学、社会科学、工程、人文、以及常识等,有效地评估了大模型在中文知识储备和语言理解上的能力。我们使用了 few shot 的方法来进行测试。 - [Gaokao](https://github.com/OpenLMLab/GAOKAO-Bench) 是一个中国高考题目的数据集,旨在直观且高效地测评大模型语言理解能力、逻辑推理能力的测评框架。我们只保留了其中的单项选择题,使用 zero shot 的方法来进行测试。 - [AGIEval](https://github.com/ruixiangcui/AGIEval) 是一个用于评估基础模型在标准化考试(如高考、公务员考试、法学院入学考试、数学竞赛和律师资格考试)中表现的数据集。我们只保留了其中的四选一单项选择题,使用 zero shot 的方法来进行测试。 - [BBH](https://huggingface.co/datasets/lukaemon/bbh) 是一个挑战性任务 Big-Bench 的子集。Big-Bench 涵盖了语言学、儿童发展、数学、常识推理、生物学、物理学、社会偏见、软件开发等方面。BBH 更专注于其中 23 个具有挑战性的任务。我们使用了 few shot 的方法来进行测试。 - [GSM8K](https://github.com/openai/grade-school-math) 是一个高质量的英文小学数学问题测试集,包含 7.5K 训练数据和 1K 测试数据。这些问题通常需要 2-8 步才能解决,有效评估了数学与逻辑能力。我们使用了 few shot 的方法来进行测试。 - [MATH](https://huggingface.co/datasets/competition_math) 是一个由数学竞赛问题组成的评测集,由 AMC 10、AMC 12 和 AIME 等组成,包含 7.5K 训练数据和 5K 测试数据。我们使用 few shot 的方法来进行测试。 - [HumanEval](https://huggingface.co/datasets/openai_humaneval) 是由 OpenAI 发布的 164 个手写的编程问题,包括模型语言理解、推理、算法和简单数学等任务。我们使用 zero shot 的方法来进行测试。 - [LongBench](https://github.com/THUDM/LongBench) 是第一个用于对大型语言模型进行双语、多任务、全面评估长文本理解能力的基准测试。 - [T-Eval](https://github.com/open-compass/T-Eval) 是第一个用于对大型语言模型的工具使用能力进行全面评估的测试集,涵盖有工具调用\(Function call\)、规划、执行信息抽取、工具运行日志评估等多维度。我们使用 zero shot 的方法在它的中文测试集上进行测试。 ## 7B 模型结果 | Model | **C-Eval** | **MMLU** | **CMMLU** | **Gaokao** | **AGIEval** | **BBH** | **GSM8K** | **MATH** | **HumanEval** | |:------------------|:-----------|:---------|:-----------|:-------------|:--------------|:-------------|:------------|:-----------|:----------------| | | 5-shot | 5-shot | 5-shot | 0-shot | 0-shot | 3-shot | 4-shot | 5-shot | 0-shot | | GPT-4 | 69.9 | **86.4** | 71.2 | **72.3** | **55.1** | **86.7** | **91.4** | **45.8** | **74.4** | | ChatGPT | 52.5 | 70.0 | 53.9 | 51.1 | 39.9 | 70.1 | 78.2 | 28 | 73.2 | | LLaMA2-7B | 32.5 | 45.3 | 31.8 | 18.9 | 21.8 | 38.2 | 16.7 | 3.3 | 12.8 | | ChatGLM2-6B(Base) | 51.7 | 47.9 | 50.0 | - | - | 33.7 | 32.4 | 6.5 | - | | Baichuan2-7B | 56.3 | 54.7 | 57.0 | 34.8 | 34.6 | 41.8 | 24.6 | 5.4 | 17.7 | | BlueLM-7B-Base | 67.5 | **55.2** | 66.6 | **58.9** | **43.4** | 41.7 | 27.2 | 6.2 | 18.3 | | BlueLM-7B-Chat | **72.7** | 50.7 | **74.2** | 48.7 | **43.4** | **65.6** | **51.9** | **13.4** | **21.3** | ## 7B-32K 模型结果 我们还在 LongBench 和 T-Eval 评测集上对我们的 BlueLM-7B-Chat-32K 模型进行了测试,具体结果如下表所示: ### LongBench | Model | 平均 | Summary | Single-Doc QA | Multi-Doc QA | Code | Few-shot | Synthetic | |:----------------------|:-----|:---------|:--------------|:--------------|:------|:---------|:----------| | BlueLM-7B-Chat-32K | 41.2 | 18.8 | 35.6 | 36.2 | 54.2 | 56.9 | 45.5 | ### T-Eval-ZH | Model | instruct | plan | reason | retrieve | understand | review | overall | |:----------------------|:---------|:---------|:---------|:---------|:-----------|:---------|:---------| | Qwen-7B | 82.3 | 62.2 | 50.0 | 59.1 | 67.0 | 57.1 | 63.0 | | Qwen-14B | **96.5** | **77.1** | 57.0 | 73.0 | **76.5** | 43.7 | 70.6 | | BlueLM-7B-Chat-32K | 79.6 | 63.4 | **61.5** | **73.9** | 74.2 | **73.9** | **71.3** | # 推理部署 ## 环境依赖 首先需要下载本仓库: ``` git clone https://github.com/vivo-ai-lab/BlueLM cd BlueLM ``` 然后使用 pip 安装依赖: ``` pip install -r requirements.txt ``` 使用 BlueLM-7B-Base-32K 或 BlueLM-7B-Chat-32K,请额外安装 flash_attn: ``` pip install flash_attn==2.3.3 ``` 如果安装失败,建议安装[预编译版本](https://github.com/Dao-AILab/flash-attention/releases/)的 flash_attn。 ## 代码调用 ### Base 模型推理示例 ```python >>> from transformers import AutoModelForCausalLM, AutoTokenizer >>> tokenizer = AutoTokenizer.from_pretrained("vivo-ai/BlueLM-7B-Base", trust_remote_code=True, use_fast=False) >>> model = AutoModelForCausalLM.from_pretrained("vivo-ai/BlueLM-7B-Base", device_map="cuda:0", trust_remote_code=True) >>> model = model.eval() >>> inputs = tokenizer("儒林外史->吴敬梓\n隋唐演义->褚人获\n红楼梦->", return_tensors="pt") >>> inputs = inputs.to("cuda:0") >>> pred = model.generate(**inputs, max_new_tokens=64, repetition_penalty=1.1) >>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)) 儒林外史->吴敬梓 隋唐演义->褚人获 红楼梦->曹雪芹 三国演义->罗贯中 水浒传->施耐庵 西游记->吴承恩 聊斋志异->蒲松龄 封神演义->许仲琳 东周列国志->冯梦龙 三侠五义->石玉昆 七剑十三侠->唐芸洲 ``` ## 命令行 Demo  ```shell python cli_demo.py ``` 本命令行 Demo 仅支持 Chat 场景。 ## 网页 Demo  ```shell streamlit run web_demo.py --server.port 8080 ``` 本网页 Demo 仅支持 Chat 场景。 ## OpenAI API Demo 运行 [api_server.py](openai_api_demo/api_server.py) 部署 OpenAI 格式的代码,支持基于 ChatGPT 应用后端。 ```shell cd openai_api_demo python api_server.py ``` python 测试代码,包括支持流式响应和 function calling 的请求。 ```shell cd openai_api_demo python openai_api_request.py ``` ## Tool Demo 可在命令行运行工具使用 Demo [cli_demo_tool.py](cli_demo_tool.py), demo 中已提供可作为测试的工具 sample。 ```shell python cli_demo_tool.py ``` 根据命令行提示分别输入问题与外部工具的执行结果,完成一次工具调用需进行两轮对话。 示例:"<>"内为待用户输入内容。 ``` 用户: <杭州今天的湿度是多少?> BlueLM: {\"answer\": null, \"function_calls\": [{\"name\": \"current-weather\", \"parameters\": {\"city\": \"杭州\"}}]} 工具结果: <{\"city\": \"杭州\", \"weather\": \"当前天气 晴,气温20摄氏度,风力2级,湿度40%\"}> BlueLM: {"answer": "杭州湿度40%。", "function_calls": null} ``` ## BlueLM-7B-Chat 示例输出