Anolis OS 23 基于 AMD 实例的 AI 推理优化实践 | 龙蜥技术

简介: 如何使用龙蜥社区容器镜像加速 AI 应用推理部署?

编者按:龙蜥操作系统 Anolis OS 23 是龙蜥社区基于操作系统分层分类理论,面向上游原生社区独立选型,全面支持智算的首款国内发行版,为开发人员提供了强大的 AI 开发平台,通过支持龙蜥生态软件仓库(EPAO),Anolis OS 23 实现了对主流 AI 框架的全面支持,使得 AI 开发更加便捷高效。本文将基于 AMD 实例介绍 Anolis OS 23 针对 AI 推理应用进行的专门优化,并通过最佳实践演示如何使用龙蜥社区容器镜像加速 AI 应用推理部署。

01 Anolis OS 23 加速 AI 应用部署

Anolis OS 23 中通过引入龙蜥生态软件仓库(EPAO),实现一键安装部署 AI 开发环境,解决了 AI 组件之间繁琐的依赖关系,加速 AI 应用的开发、部署流程。EPAO 仓库有以下特点:

  • EPAO 仓库支持开发者一键安装主流 NVIDIA GPU 驱动和 CUDA 加速库,为开发者节省驱动版本匹配和手动安装的时间。
  • EPAO 仓库提供对主流 AI 框架 PyTorch/TensorFlow 的版本支持,同时安装过程中自动解决 AI 框架的依赖问题,开发者无需进行额外编译,即可搭配系统 Python 环境进行快速开发。
  • EPAO 仓库中的组件在提供给开发者之前,均经过兼容性测试,开发者可以一键安装对应的组件,免去环境配置中可能出现的对系统依赖项的修改,提供使用过程中的稳定性。

EPAO 仓库当前支持的 AI 组件列表:

分类 名称 版本号
驱动 cuda 12.1.1
nvidia-driver 530.30.02
AI 框架 tensorflow 2.12.0
pytorch 2.0.1
onnx 1.14.0
CPU 场景模型加速

intel-extension-for-pytorch

2.0.100

intel-extension-for-tensorflow

1.2.0
NVIDIA 容器支持

nvidia-container-toolkit

1.13.1
libnvidia-container 1.13.1

在 Anolis OS 23 上部署 AI 环境只需三步,就可以安装适用于系统 Python 版本的 AI 开发环境:

1. 引入 EPAO。

dnf install -y anolis-epao-release

2.(GPU 实例)安装 NVIDIA 驱动及 CUDA。

dnf install -y kernel-devel-$(uname-r)
dnf install -y nvidia-driver nvidia-driver-cuda cuda

3. 安装 AI 框架。

dnf install -y pytorch
dnf install -y tensorflow

02 Anolis OS 23 加速 AI 应用推理

CPU 平台相较于 GPU 平台具备多种优势,包括灵活通用、低功耗高性能、易扩展和生态丰富等。在 AI 推理应用部署中,CPU 仍然是一种非常重要的硬件平台。然而,在 CPU 上部署 AI 推理应用并充分发挥其全部硬件性能,对开发者来说却是一个繁琐的问题。Anolis OS 23 针对这个问题,聚焦 AMD CPU 实例,引入了 AI 专门优化方案,更好的帮助开发者释放出硬件的全部性能,为开发者降本增效。

1.CPU 计算加速:现代 CPU 具备多种扩展指令集,可以大幅提高重复计算工作的并行度,然而这些指令集需要经过软件适配才能发挥作用。AMD 推出的 ZenDNN 加速库可以针对 AMD CPU 架构,充分利用扩展指令集优化 AI 推理计算,帮助 AI 开发者充分释放 AMD 平台的深度学习推理性能。ZenDNN 针对不同的推理工作负载均有优化效果,包括计算机视觉、自然语言处理和推荐系统。并且在最新的 ZenDNN v4.1 发布页面中,Anolis OS 已经正式获得 AMD 官方支持,成为首款支持 ZenDNN 的国内发行版。

2.内存分配加速:在进行 AI 推理过程中,大量的数据需要从内存中读写。使用内存加速技术可以提高内存访问的效率,减少数据访问的延迟和带宽限制。同时内存加速技术可以支持多线程并发访问内存,提高推理并行度和整体性能。tcmalloc 和 jemalloc 是两种常用的内存分配器,相比于 glibc 默认的 ptmalloc,这两种内存分配器针对多线程程序的内存管理进行了专门优化,以提高内存分配释放的性能。目前 Anolis OS 23 仓库中已经引入这两种内存分配器,开发者可以一键安装对应的组件。

在第八代 AMD ECS 实例上,安装相同版本的运行环境下,经过优化后的 Anolis OS 23 与 Ubuntu 部署相同大模型的推理性能对比:

  ChatGLM Qwen

Stable Diffusion

Ubuntu 22.04 4.985 byte/s 3.957 byte/s 0.604 pic/min
Anolis OS 23 23.811 byte/s 18.426 byte/s 1.443 pic/min

03 AI 应用推理优化实践

为了减少 AI 开发者在环境部署上的成本,龙蜥社区推出了针对 AMD CPU 优化的 AI 推理容器镜像,镜像中直接集成 ZenDNN CPU 计算加速以及 tcmalloc 内存加速,即开即用,将 AI 推理环境部署成本降低为 0。

在使用龙蜥社区容器镜像之前,需要安装 docker 运行环境,在 Anolis OS 23 上可以通过如下命令安装:

dnf install -y docker

具备 docker 运行环境后,开发者可以通过以下命令拉取镜像,并进入镜像进行 AI 开发部署:

docker pull registry.openanolis.cn/openanolis/pytorch-amd:1.12-23-zendnn4.0
docker run -d -it --name pytorch-amd -u $(id -u):$(id -g) -v $HOME:$HOME registry.openanolis.cn/openanolis/pytorch-amd:1.12-23-zendnn4.0
docker exec -it pytorch-amd /bin/bash

镜像中针对 AMD CPU 的优化已经默认生效,开发者只需要安装 AI 应用的依赖环境,就可以运行推理应用享受极致的性能体验。下面将以 ChatGLM-6B 模型为例,体验容器镜像带来的便捷(为了保证模型运行的稳定,容器内存至少分配 32 GB,存储空间至少分配 100 GB)。

1.在部署 ChatGLM-6B 之前,需要安装一些必备软件。

dnf install -y git git-lfs

2.下载 ChatGLM-6B 项目源码。

git clone https://github.com/THUDM/ChatGLM-6B.git

3.安装 Python 运行依赖(镜像已包含 PyTorch,无需另外安装)

pip install protobuf transformers==4.27.1 cpm_kernels gradio mdtex2html sentencepiece accelerate streamlit streamlit-chat

4.运行网页 DEMO。运行网页 DEMO 时,由于国内网络原因,可能会出现模型下载失败,可以多次重试,或手动下载模型文件并指定本地离线模型。

cd ~/ChatGLM-6B
streamlit run web_demo2.py --server.port 7860

网页版服务运行起来后,可以通过 http://<ECS EXTERNAL IP>:7860 访问服务。部署在 AMD CPU 实例上的聊天机器人再经过 Anolis OS 23 的专门优化后,对话非常流利,开发者无需 GPU 实例即可流畅开发 AI 应用,大大减少了开发成本与开发时间。

“更多龙蜥产品、生态、技术合作可发送邮件至邮箱 secretary@openanolis.org,我们会第一时间与您联系。”

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

社群.png

关于龙蜥

龙蜥社区是立足云计算打造面向国际的 Linux  服务器操作系统开源根社区及创新平台。龙蜥操作系统(Anolis OS)是龙蜥社区推出的 Linux 发行版,拥有三大核心能力:提效降本、更加稳定、更加安全。

目前,Anolis OS 23 已发布,全面支持智能计算,兼容主流 AI 框架,支持一键安装 nvidia GPU 驱动、CUDA 库等,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。

加入我们,一起打造面向云时代的操作系统!

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
人工智能 运维 安全
|
8天前
|
存储 机器学习/深度学习 人工智能
​​解锁AI检索的7大Embedding技术:从稀疏到多向量,一文掌握!​
本文系统解析七种主流文本嵌入技术,包括 Sparse、Dense、Quantized、Binary、Matryoshka 和 Multi-Vector 方法,结合适用场景提供实用选型建议,助你高效构建文本检索系统。
75 0
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术深度解析:生成式AI的革命性突破与产业应用实战
蒋星熠Jaxonic,AI技术探索者,深耕生成式AI领域。本文系统解析AIGC核心技术,涵盖Transformer架构、主流模型对比与实战应用,分享文本生成、图像创作等场景的实践经验,展望技术趋势与产业前景,助力开发者构建完整认知体系,共赴AI原生时代。
64 1
|
8天前
|
机器学习/深度学习 人工智能 资源调度
嵌入式AI领域关键技术的理论基础
本内容系统讲解嵌入式AI领域关键技术的数学理论基础,涵盖神经网络量化、剪枝、知识蒸馏与架构搜索的核心原理。深入探讨量化中的信息论与优化方法、稀疏网络的数学建模、蒸馏中的信息传递机制,以及神经架构搜索的优化框架,为在资源受限环境下实现高效AI推理提供理论支撑。
40 5
|
1月前
|
Web App开发 缓存 Rust
|
1月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
10月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
452 0
Vanilla OS:下一代安全 Linux 发行版
|
7月前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
380 10
|
8月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
287 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
8月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
190 7

推荐镜像

更多