魔搭+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盲盒。
相关文章
|
15天前
|
人工智能 自动驾驶 vr&ar
探索GPU算力平台的创新应用:从游戏到自动驾驶的跨越
【8月更文第5天】本文探讨了GPU(图形处理器)在现代计算中的角色转变,从最初的图形渲染到如今成为人工智能和高性能计算的重要组成部分。我们将通过几个具体的案例研究,包括游戏渲染、虚拟现实(VR)以及自动驾驶系统,来展示GPU是如何推动这些领域的进步和发展。
25 1
|
15天前
|
机器学习/深度学习 人工智能 并行计算
GPU算力平台:数字化转型的核心驱动力
【8月更文第5天】随着人工智能(AI)、大数据分析以及高性能计算需求的不断增长,图形处理器(GPU)因其卓越的并行计算能力而成为加速这些领域的关键技术。GPU算力平台不仅能够显著提升计算效率,还能帮助企业更好地处理大规模数据集,支持复杂的机器学习模型训练,并促进实时数据分析。本文将探讨GPU算力平台在数字化转型中的核心作用,并通过示例代码展示其在实际应用中的优势。
30 1
|
2天前
|
机器学习/深度学习 人工智能 并行计算
【人工智能】CPU、GPU与TPU:人工智能领域的核心处理器概述
在人工智能和计算技术的快速发展中,CPU(中央处理器)、GPU(图形处理器)和TPU(张量处理器)作为核心处理器,各自扮演着不可或缺的角色。它们不仅在性能上各有千秋,还在不同的应用场景中发挥着重要作用
13 2
|
15天前
|
机器学习/深度学习 并行计算 调度
构建高效GPU算力平台:挑战、策略与未来展望
【8月更文第5天】随着深度学习、高性能计算和大数据分析等领域的快速发展,GPU(图形处理器)因其强大的并行计算能力和浮点运算速度而成为首选的计算平台。然而,随着模型规模的增长和技术的进步,构建高效稳定的GPU算力平台面临着新的挑战。本文旨在探讨这些挑战、应对策略以及对未来发展的展望。
39 1
|
1月前
|
并行计算 API 数据处理
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
|
1月前
|
机器学习/深度学习 人工智能 并行计算
GPU 和 CPU 处理器的架构
CPU(中央处理器)和 GPU(图形处理单元)是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。
47 1
|
1月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能平台PAI产品使用合集之进入DSW后,如何把工作环境切换为GPU状态
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
2月前
|
监控 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之使用自定义镜像部署GPU服务时,报错 "CPU is required but not provided",是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
机器学习/深度学习 并行计算 调度
对比GPU与CPU
对比GPU与CPU
21 0