魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署

简介: 随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。

导读


随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。


llama2.c 是用 C 语言实现的,没有任何依赖的大模型推理库,它能够以比较高效的方式运行在 CPU 上,可以在个人电脑,比如 Macbook 上完成大模型的推理任务,解决了很多没有显卡却想试一下部署 Llama2 的用户需求。


其实,在这个项目之前,就有一个开源项目专门针对个人用户的大模型推理需求,适配各种硬件的推理框架,包括 Andrej Karpathy 的 llama2.c 项目也是受其启发,那就是 llama.cpp,一个目前在 Github 有超过 4万 star 的项目。


llama.cpp


llama.cpp 是一个用 C/C++ 编写的推理框架,没有任何依赖,能够在几乎所有系统和硬件运行,支持包括 LLaMA 2、Code Llama、Falcon、Baichuan 等 llama 系的模型。除了能够使用 CPU 推理,它也可以利用 CUDA、Metal 和 OpenCL 这些 GPU 资源加速,所以不管是英伟达、AMD还是 Apple 的 GPU 都能够帮助提升推理性能。


除了硬件的支持,llamacpp 还有一个重要的特性就是支持模型量化,可以极大地减少模型对显存或者内存使用量,下面的表列出了不同量化方式的模型大小以及模型效果。

Name Quant method Bits Size Max RAM required Use case
llama-2-70b-chat.Q2_K.gguf Q2_K 2 29.28 GB 31.78 GB smallest, significant quality loss - not recommended for most purposes
llama-2-70b-chat.Q3_K_S.gguf Q3_K_S 3 29.92 GB 32.42 GB very small, high quality loss
llama-2-70b-chat.Q5_K_S.gguf Q5_K_S 5 30.57 GB 33.07 GB large, low quality loss - recommended
llama-2-70b-chat.Q3_K_M.gguf Q3_K_M 3 33.19 GB 35.69 GB very small, high quality loss
llama-2-70b-chat.Q3_K_L.gguf Q3_K_L 3 36.15 GB 38.65 GB small, substantial quality loss
llama-2-70b-chat.Q4_0.gguf Q4_0 4 38.87 GB 41.37 GB legacy; small, very high quality loss - prefer using Q3_K_M
llama-2-70b-chat.Q4_K_S.gguf Q4_K_S 4 39.07 GB 41.57 GB small, greater quality loss
llama-2-70b-chat.Q4_K_M.gguf Q4_K_M 4 41.42 GB 43.92 GB medium, balanced quality - recommended
llama-2-70b-chat.Q5_0.gguf Q5_0 5 47.46 GB 49.96 GB legacy; medium, balanced quality - prefer using Q4_K_M
llama-2-70b-chat.Q5_K_M.gguf Q5_K_M 5 48.75 GB 51.25 GB large, very low quality loss - recommended
llama-2-70b-chat.Q6_K.gguf Q6_K 6 56.59 GB 59.09 GB very large, extremely low quality loss
llama-2-70b-chat.Q8_0.gguf Q8_0 8 73.29 GB 75.79 GB very large, extremely low quality loss - not recommended



本地部署



模型


为了方便使用到 llamacpp 的能力,我们在魔搭平台上传了模型的 gguf 版本,目前已经支持的模型包括以下列表:


后续更多的模型也在持续支持中,欢迎大家在社区列出需要的模型,我们会第一时间上传到魔搭。


Xinference


Xinference(https://github.com/xorbitsai/inference) 是一个开源推理平台,能够帮助用户非常方便地在本地部署开源大模型,借助 Xinference,你能够在云端、本地设备,甚至是笔记本电脑上运行任何开源大语言模型、语音识别模型等多模态模型的推理,llamacpp 的模型同样也是支持的。同时,Xinference 和魔搭也做了深度集成,对于在魔搭中能够找到的模型,优先从魔搭下载,对于本地部署非常友好。


安装

安装 Xinference:

pip install xinference

安装 llamacpp:

  • CPU 版本
pip install llama-cpp-python


  • CUDA 版本
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python


  • Apple Metal 版本
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python


其余硬件可以参考文档

https://github.com/abetlen/llama-cpp-python#installation-with-hardware-acceleration


部署模型

通过命令行拉起 Xinference 服务:

xinference



默认会有一个模型选择的 Web UI,选择任意想部署的模型。


也可以通过代码部署模型与推理:

from xinference.client import Client
client = Client("http://127.0.0.1:9997")
model_uid = client.launch_model(
    model_name="llama-2-chat",
    model_format="ggufv2", 
    model_size_in_billions=7,
    quantization="Q4_K_M",
    )
model = client.get_model(model_uid)
chat_history = []
prompt = "What is the largest animal?"
model.chat(
    prompt,
    chat_history=chat_history,
    generate_config={"max_tokens": 1024}
)



多端体验

1 使用魔搭社区PAI-DSW的CPU实例

进入魔搭社区-notebook(https://modelscope.cn/my/mynotebook/preset)



选择CPU机型,拉起Xinference服务,以llama-2-chat 7B GGUF为例,27秒完成192个token:


内存占用:


2 在Mac-M1也可以轻松完成推理




Embedding模型


除了大语言模型,embedding 模型在 AI 应用中也占有非常重要的位置,我们在魔搭里上传了 MTEB 排行中靠前的 embedding 模型,也可以通过 xinference 非常方便地在本地部署。这是目前已经支持的模型列表,包括中文和英文模型:

  • bge-large-en
  • bge-base-en
  • gte-large
  • gte-base
  • e5-large-v2
  • bge-large-zh
  • bge-large-zh-noinstruct
  • bge-base-zh
  • multilingual-e5-large
  • bge-small-zh
  • bge-small-zh-v1.5
  • bge-base-zh-v1.5
  • bge-large-zh-v1.5
  • bge-small-en-v1.5
  • bge-base-en-v1.5
  • bge-large-en-v1.5


目前 embedding 模型支持通过代码推理:

In [1]: client = Client("http://localhost:9997")
In [2]: uid = client.launch_model(model_name="gte-base", model_type="embedding")
In [3]: model = client.get_model(model_uid=uid)
In [4]: model.create_embedding("write a poem.")
Out[4]:
{'object': 'list',
 'model': '3ef99480-496f-11ee-9009-c2c8e4cad3f6',
 'data': [{'index': 0,
   'object': 'embedding',
   'embedding': [-0.003699747147038579,
    0.019329899922013283,
    ...,
    -0.05098249390721321,
    -0.001861078548245132]}],
 'usage': {'prompt_tokens': 37, 'total_tokens': 37}}



总结



使用魔搭与 Xinference 平台,可以快速搭建本地大模型服务,赶快试用起来吧,更多的模型陆续支持中,欢迎大家的反馈。


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
2月前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
3月前
|
监控 异构计算
Jetson 学习笔记(八):htop查看CPU占用情况和jtop监控CPU和GPU
在NVIDIA Jetson平台上使用htop和jtop工具来监控CPU、GPU和内存的使用情况,并提供了安装和使用这些工具的具体命令。
287 0
|
3天前
|
存储 Serverless 文件存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
2月前
|
并行计算 Linux PyTorch
在云上部署ChatGLM2-6B大模型(GPU版)
本教程指导您在配置了Alibaba Cloud Linux 3的GPU云服务器上,安装大模型运行环境(如Anaconda、Pytorch等),并部署大语言模型,最后通过Streamlit运行大模型对话网页Demo。教程包括创建资源、登录ECS实例、安装及校验CUDA、NVIDIA驱动和cuDNN等步骤。
|
3月前
|
机器学习/深度学习 人工智能 并行计算
CPU和GPU的区别
【10月更文挑战第14天】
|
3月前
|
机器学习/深度学习 人工智能 缓存
GPU加速和CPU有什么不同
【10月更文挑战第20天】GPU加速和CPU有什么不同
118 1
|
4月前
|
算法 测试技术 AI芯片
CPU反超NPU,llama.cpp生成速度翻5倍!LLM端侧部署新范式T-MAC开源
【9月更文挑战第7天】微软研究院提出了一种名为T-MAC的创新方法,旨在解决大型语言模型在资源受限的边缘设备上高效部署的问题。T-MAC通过查表法在CPU上实现低比特LLM的高效推理,支持混合精度矩阵乘法,无需解量化。其通过位级查表实现统一且可扩展的解决方案,优化数据布局和重用率,显著提升了单线程和多线程下的mpGEMV及mpGEMM性能,并在端到端推理吞吐量和能效方面表现出色。然而,表量化和快速聚合技术可能引入近似和数值误差,影响模型准确性。论文详见:[链接](https://www.arxiv.org/pdf/2407.00088)。
244 10
|
4月前
|
人工智能 自然语言处理 文字识别
MinerU-大语言语料处理神器,CPU/GPU均可跑,开源免费“敲”好用
在7月4日举行的WAIC 2024科学前沿主论坛上,书生·浦语2.5正式发布,面向大模型研发与应用的全链条工具体系同时迎来升级。
MinerU-大语言语料处理神器,CPU/GPU均可跑,开源免费“敲”好用
|
5月前
|
机器学习/深度学习 人工智能 并行计算
【人工智能】CPU、GPU与TPU:人工智能领域的核心处理器概述
在人工智能和计算技术的快速发展中,CPU(中央处理器)、GPU(图形处理器)和TPU(张量处理器)作为核心处理器,各自扮演着不可或缺的角色。它们不仅在性能上各有千秋,还在不同的应用场景中发挥着重要作用
298 2
|
5月前
|
SQL 存储 缓存
什么?部署ClickHouse的服务器CPU利用率100%了?
什么?部署ClickHouse的服务器CPU利用率100%了?