在快速发展的科技时代,人工智能正深刻改变我们的生活和工作。它广泛应用于日常生活、工业生产、医疗诊断和金融分析等多个领域。特别值得关注的是,MiniCPM 3.0这款端侧大模型,以其独特魅力和潜力,成为人工智能领域的新星。
一、MiniCPM 3.0 概述
MiniCPM 3.0 是一个拥有 4B 参数量的语言模型,其强大的实力不容小觑。与 MiniCPM1.0 和 MiniCPM2.0 相比,它在功能方面更加全面,犹如一座精心打造的知识宝库,涵盖了丰富多样的语言处理能力。无论是文本生成、语言翻译,还是智能问答、逻辑推理,MiniCPM 3.0 都能游刃有余地应对。
在综合能力方面,MiniCPM 3.0 更是实现了大幅提升,如同一位技艺精湛的大师,展现出了卓越的智慧和才华。它在多数评测集上的表现堪称惊艳,效果不仅比肩众多 7B - 9B 模型,甚至在很多方面超越了它们。无论是在准确性、流畅性,还是在创新性和实用性方面,MiniCPM 3.0 都展现出了非凡的实力,为用户带来了全新的体验和价值。
二、MiniCPM 3.0 的技术特点
1. 轻量级参数规模与低内存占用
-
MiniCPM 3.0 拥有 40 亿参数,虽然在大模型中参数规模不算庞大,但却能在性能上表现出色。
-
经过优化后,量化后仅需 2.2G 内存,这使得它能够在资源受限的端侧设备上运行,如手机、iPad 等移动设备。在 iPad 端侧推理能达到 18 - 20 tokens/s 的速度,满足实时交互的需求。
2. 强大的长文本处理能力
-
支持高达 32k 的上下文长度,能够轻松处理非常庞大的文本数据集。
-
采用创新的 LLMxMapReduce 长文本分帧处理技术,将长文本分割成多个子任务,然后递归地进行处理。即使在端侧有限的算力条件下,也能高效处理超长文本,并且在文本不断加长的情况下,仍能保持稳定性能,减少长文本随加长而掉分的情况。
3. 函数调用功能
-
用户可以以自然语言形式向 AI 发出指令,模型会将这些模糊的输入转化为具体的命令去操作外部工具或系统。
-
极大地拓展了模型的应用边界,使人机交互更加自然和方便。
4. 检索增强生成(RAG)
-
结合了信息检索技术和生成式 AI 的优势,在生成内容时可以利用已有的知识库。
-
一口气上线了 RAG 三件套,包括检索模型、重排序模型和面向 RAG 场景的 LoRA 插件,提高了输出的质量和准确性,减少大模型的幻觉问题。
5. 代码解释器
对于开发者而言是一个实用的功能,能够帮助理解复杂的代码逻辑甚至直接协助编程工作。
三、MiniCPM 3.0 的性能表现
1. 在中文能力基准测试中的卓越表现
-
在 CMMLU、CEval 等考究中文能力的基准测试中,MiniCPM 3.0 轻松碾压 Phi - 3.5、以及 GPT - 3.5 等模型。
-
即便是对上 8b、9b 等国内优秀的大模型,MiniCPM 3.0 的表现同样出众。
2. 出色的数学能力
-
在 Math Bench 上的效果超越 GPT - 3.5 - Turbo 以及多个 7b - 9b 模型。
-
在具有挑战性的 Live Code Bench 上,效果超越 Llama 3.1 - 8b - Instruct。
3. 优秀的指令遵循能力
在英文指令遵循 IfEval、中文指令遵循 Follow Bench - Zh 方面效果超越 GLM - 4 - 9b - Chat、Qwen 2 - 7b - Instruct 等模型。
四、MiniCPM 3.0 的应用场景
1. 智能客服
-
作为智能客服的核心技术,MiniCPM 3.0 能够为用户提供快速、准确的解答。
-
提高客户满意度,同时降低企业的运营成本。
2. 文本生成
-
帮助用户进行文章写作、新闻报道、广告文案等文本创作。
-
为内容创作者提供高效的工具,提高创作效率和质量。
3. 语言翻译
-
可以作为一种高效的语言翻译工具,为用户提供准确、流畅的翻译服务。
-
支持多种语言之间的翻译,满足全球化时代的语言需求。
4. 智能推荐
-
在电商、新闻、视频等领域提供个性化的推荐服务。
-
提高用户的满意度和忠诚度,同时增加企业的销售额和利润。
五、MiniCPM 3.0模型下载
我们可以采用 modelscope 的 snapshot_download 来进行 MiniCPM 3.0 模型的下载。在此之前,需要提前安装 modelscope,可通过执行 “pip install modelscope” 命令来完成。在下载过程中,第一个参数需设置为 modelscope 上的模型路径,而 cache_dir 则用于指定模型的本地存放地址。这样的下载方式确保了模型能够准确、高效地存储在本地,为后续的推理操作做好准备。
`#模型下载`
`from modelscope import snapshot_download``snapshot_download('OpenBMB/MiniCPM3-4B', cache_dir='/root/autodl-tmp', revision='master')`
下载完成如下:
六、Transformers推理测试
Transformers 是由 Hugging Face 开发的开源库,可用于众多自然语言处理任务,其中包括语言模型推理。它提供了一系列预训练模型与工具,让开发者能够便捷地进行文本生成、语言翻译、问答系统等任务的开发及推理。该库具备简洁易用的接口,方便用户加载预训练模型,并进行推理和微调等操作。
1、安装依赖
pip install transformers`` ``pip install datamodel-code-generator`` ``pip install 'accelerate>=0.26.0'
2、推理示例
from transformers import AutoModelForCausalLM, AutoTokenizer``import torch``torch.manual_seed(0) # 设置随机数种子,确保实验可重复性。`` ``path = '/root/autodl-tmp/OpenBMB/MiniCPM3-4B'``# 从指定路径加载分词器``tokenizer = AutoTokenizer.from_pretrained(path)``# 从指定路径加载因果语言模型,设置数据类型为 bfloat16,将模型映射到 CUDA 设备,设置信任远程代码以便正确加载模型相关的代码和配置``model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='cuda', trust_remote_code=True)`` ``# 使用模型的聊天功能进行交互,传入分词器、问题文本、温度参数(用于控制生成的随机性)、top_p 参数(用于控制生成的多样性),返回响应内容和交互历史``responds, history = model.chat(tokenizer, "请写一篇关于人工智能的文章,详细介绍人工智能的未来发展和隐患。", temperature=0.7, top_p=0.7)``# 打印生成的响应内容``print(responds)
输出:
七、SGLang 推理测试
SGLang 是用于大型语言模型和视觉语言模型的快速服务框架,其核心功能有:一是快速后端运行时,提供高效服务,如 RadixAttention 用于多种技术及量化方式;二是灵活的前端语言,提供直观界面用于编程 LLM 应用程序,涵盖多种功能;三是广泛的模型支持,支持多种生成模型和嵌入模型且易扩展;四是有活跃的社区,开源且在行业中得到应用。
1、源码安装sglang
git clone https://github.com/sgl-project/sglang.git`` ``cd sglang`` ``pip install --upgrade pip`` ``pip install -e "python[all]"
2、安装flashinfer依赖
pip 安装
pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/
3、sglang启动推理服务
`python -m sglang.launch_server --model /root/autodl-tmp/OpenBMB/MiniCPM3-4B --trust-remote-code --port 30000 --chat-template chatml --disable-cuda-graph`
启动完成如下:
注意:出现out of memory时,加上参数–disable-cuda-graph再试
4、Bash脚本调用服务
curl http://localhost:30000/generate \` `-H "Content-Type: application/json" \` `-d '{` `"text": "在很久以前,",` `"sampling_params": {` `"max_new_tokens": 16,` `"temperature": 0` `}` `}'
输出响应:
{“text”:“有一个小村庄,村庄里住着一群快乐的小动物。他们每天一起”,“meta_info”:{“prompt_tokens”:5,“completion_tokens”:16,“completion_tokens_wo_jump_forward”:16,“finish_reason”:{“type”:“length”,“length”:16},“id”:“3b12bec7d6bc4321b2c38c6a4acc1b53”},“index”:0}
5、python代码调用服务
import openai``client = openai.Client(` `base_url="http://127.0.0.1:30000/v1", api_key="EMPTY")`` ``# Text completion``response = client.completions.create(` `model="default",` `prompt="The capital of France is",` `temperature=0,` `max_tokens=32,``)``print(response)``print("--------------------------------------------------")`` ``# Chat completion``response = client.chat.completions.create(` `model="default",` `messages=[` `{"role": "system", "content": "You are a helpful AI assistant"},` `{"role": "user", "content": "你叫什么名字?"},` `],` `temperature=0,` `max_tokens=64,``)``print(response.choices[0].message.content)
输出如下:
Completion(id=‘3bf59be1dea6498d939617e9ed5ae0cb’, choices=[CompletionChoice(finish_reason=‘length’, index=0, logprobs=None, text=’ Paris.\n\n- Paris, the capital of France, is a global city known for its rich history, art, fashion, cuisine, and culture. It’)], created=1728473468, model=‘default’, object=‘text_completion’, system_fingerprint=None, usage=CompletionUsage(completion_tokens=32, prompt_tokens=6, total_tokens=38, completion_tokens_details=None, prompt_tokens_details=None))
--------------------------------------------------
八、vLLM推理测试
vLLM(Vectorized Large Language Model Serving System)是一个为了加速大型语言模型推理而设计的高性能库。它通过实现创新的内存管理技术PagedAttention,优化了键值对内存的使用,支持连续批处理请求,以及CUDA/HIP图的快速模型执行,显著提升了推理速度和吞吐量。此外,vLLM还支持量化技术和分布式推理,使得它能够在多种硬件平台上运行,包括NVIDIA GPU、AMD CPU和GPU、Intel CPU和GPU、TPU等。vLLM易于使用,与HuggingFace模型无缝集成,并提供OpenAI兼容的API服务器,使其成为部署大型语言模型的理想选择。
1、安装vllm
pip install vllm==0.6.2
2、vllm启动推理服务
vllm serve /root/autodl-tmp/OpenBMB/MiniCPM3-4B --dtype auto --api-key token-abc123 --trust-remote-code --max_model_len 2048 --gpu_memory_utilization 0.7
启动如下:
参数说明:
-
–model /root/ld/ld_model_pretrained/minicpm3 #模型地址
-
–served-model-name MiniCPM3-4B #模型的名字,可以自定义,在调用脚本中会用到
-
–dtype auto # 设置的精度,比如bf16,fp16
-
–api-key token-abc123 # 可以理解为你的密码,调用脚本中会用到
-
–tensor-parallel-size 1 # 使用多少张卡,建议1,2,4,8
-
–max_model_len 4096 # 模型的最长上下文,越长占用显存越多,必须设置
-
–gpu_memory_utilization 0.9 # 使用多少显存来运行这个模型,1代表100%
-
–trust-remote-code # 不要改,这里是是否使用远程代码
-
–enforce_eager # 使用eager模式,这个模式下显存占用较少
3、服务调用
from openai import OpenAI``client = OpenAI(` `base_url="http://localhost:8000/v1",` `api_key="token-abc123",``)`` ``completion = client.chat.completions.create(` `model="/root/autodl-tmp/OpenBMB/MiniCPM3-4B",` `messages=[` `{"role": "user", "content": "你好,很高兴见到你!"}` `]``)`` ``print(completion.choices[0].message)
输出:
ChatCompletionMessage(content=‘你好!很高兴见到你,人类朋友!非常高兴能与你交谈,希望我们的对话能够愉快而富有启发。请告诉我,你有什么问题或者想聊的话题,我在这里倾听并乐意帮助。’, refusal=None, role=‘assistant’, function_call=None, tool_calls=[])
九、Llamacpp推理测试
Llamacpp 通过开发者用 C/C++ 实现 Meta 的 LLaMA 模型推理代码,为语言模型的高效推理提供了有力的支持。在计算资源有限的环境下,Llamacpp 也能够实现高效的推理,相比 Python 等高级语言,它具有运行效率高和资源占用少的优势。Llamacpp 支持多种硬件平台,如 x86、ARM、CUDA 和 Metal 等,能够在不同的处理器和架构上运行,充分发挥硬件性能,为用户提供快速的推理服务。此外,Llamacpp 还具备模型量化功能,可将模型参数从 32 位浮点数转换为低位数,在不显著降低性能的前提下,减少存储空间和资源需求。
1、下载llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
2、编译llama.cpp
`cd llama.cpp`
`make`
3、获取MiniCPM的gguf模型
pip install -r requirements.txt`` ``#将pytorch模型转化为fp16的gguf``python convert_hf_to_gguf.py /root/autodl-tmp/OpenBMB/MiniCPM3-4B/ --outfile /root/autodl-tmp/CPM-4B-F16.gguf
转化成功如下:
4、开始推理
./llama-cli -c 1024 -m /root/autodl-tmp/CPM-4B-F16.gguf -n 1024 --top-p 0.7 --temp 0.7 --prompt "<|im_start|>user\n请写一篇关于西安旅游的文章,详细介绍一下西安的旅游景点。<|im_end|>\n<|im_start|>assistant\n"
推理如下:
5、启动api服务
发起http服务,参数解析请见,llamacpp参数:
`./llama-server -m /root/autodl-tmp/CPM-4B-F16.gguf -c 2048`
启动成功如下:
6、API调用
使用python 调用服务,返回结果。
`import requests`` ``url = "http://localhost:8080/completion"``headers = {` `"Content-Type": "application/json"``}``data = {` `"prompt": "MiniCPM3 是哪家公司发布的?",` `"n_predict": 128``}`` ``response = requests.post(url, json=data, headers=headers)`` ``if response.status_code == 200:` `result = response.json()` `print(result["content"])``else:` `print(f"Request failed with status code {response.status_code}: {response.text}")`
输出:
答:MiniCPM3 是由面壁智能公司发布的。
答:MiniCPM3 是由面壁智能公司发布的。
结语
MiniCPM 3.0的发布,不仅是面壁智能的一次技术飞跃,更是端侧AI模型发展的重要里程碑。随着技术的不断进步和应用场景的不断拓展,MiniCPM 3.0有望在未来的商业和生活中扮演更加重要的角色,推进各行业的智能化转型。
项目地址
GitHub仓库:https://github.com/OpenBMB/MiniCPM
HuggingFace模型库:https://huggingface.co/openbmb/MiniCPM3-4B
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。