人工智能处理器与软件的持续进化,正将个人计算推向一个全新高度——AI PC。它能够大幅提升工作效率,让协作与创新变得更加灵活高效。你可能已经注意到,许多生成式AI应用(如AI聊天机器人)因计算需求过高,通常运行在云端。但今天我们要探讨的是AMD Ryzen AI技术,以及如何轻松在搭载Ryzen AI的笔记本上搭建一个本地运行的AI聊天机器人——实际效果相当出色。
谈到Ryzen AI,其核心在于集成在CPU内部的专用神经处理单元(NPU)。AMD提供了完整的软件开发套件(SDK),让开发者能够将在PyTorch或TensorFlow中训练好的模型,直接部署到搭载Ryzen AI的PC上。这样一来,NPU可以智能分配任务,减轻CPU和GPU的负担,同时保持低功耗和出色性能。SDK中包含了在NPU上优化和部署AI推理所需的工具与运行时库,安装简便,还附带一系列预量化模型,可直接从Hugging Face的AMD模型动物园获取。可以说,开发者几分钟内就能开始构建应用,充分释放AI加速的潜力。
构建AI聊天机器人
通常我们认为AI聊天机器人必须依赖云端的大模型才能运行,但其实完全可以在本地实现。你只需从Hugging Face下载一个开源的预训练OPT-1.3B模型,然后通过三个简单步骤部署到Ryzen AI笔记本上:下载 → 量化 → 启动聊天机器人。
前提条件
在开始之前,请确保你拥有一台搭载AMD锐龙AI处理器、运行Windows 11的笔记本,并已安装Anaconda、最新的Ryzen AI驱动和SDK。辅助材料可从AMD官方仓库获取。
接下来,将辅助材料(Chatbot-with-RyzenAI-1.0.zip)解压到安装Ryzen AI SW的根目录中。本例中路径为 C:\Users\ahoq\RyzenAI。
cd C:\Users\ahoq\RyzenAI
git clone alimulh/Chatbot-with-RyzenAI-1.0
然后激活安装RyzenAI时创建的conda环境(例如 ryzenai-1.0-20231204-120522):
conda activate ryzenai-1.0-20231204-120522
安装所需的gradio包(聊天机器人的浏览器应用正是通过Gradio构建的):
pip install -r requirements.txt
最后初始化路径:
setup.bat
现在,通过以下三个步骤创建聊天机器人:
第一步:从Hugging Face下载预训练模型
这一步是从Hugging Face下载预训练的OPT-1.3B模型。你可以修改 run.py 脚本,从自己的或公司的仓库下载。OPT-1.3B大约4GB,下载时间取决于网速——本例中大约花了6分钟。
cd Chatbot-with-RyzenAI-1.0
python run.py --model_name opt-1.3b --download
下载的模型保存在 opt-1.3b_pretrained_fp32 文件夹中。

第二步:量化下载的模型(从FP32到Int8)
下载完成后,进行量化:
python run.py --model_name opt-1.3b --quantize
量化分为两步。首先,FP32模型经过“平滑量化”处理,以减少量化过程中的精度损失。这本质上是识别激活系数中的异常值并相应调节权重,使得量化时丢弃异常值带来的误差几乎可以忽略。平滑量化由AMD先驱研究员、麻省理工学院EECS教授宋汉博士发明。下面是该技术工作原理的可视化演示:

你可以了解更多关于平滑量化(SmoothQuant)技术的信息。平滑量化完成后,模型会与 mart.json 文件一起保存在 opt-1.3b_smoothquant 文件夹的 model_onnx 子文件夹中。截图如下:

平滑量化大约需要30秒。完成后,最佳量化器将模型转换为Int8格式。Int8量化模型保存在 opt-1.3b_smoothquant 文件夹内的 model_onnx_int8 子文件夹中。这是一个离线过程,大约需要2-3分钟,通常一次完成。Int8量化日志截图:

第三步:评估模型并用聊天机器人应用部署
接下来,评估量化模型并以NPU为目标运行。注意将模型路径设置为上一步保存Int8量化模型的位置:
python run.py --model_name opt-1.3b --target aie --local_path .\opt-1.3b_smoothquant\model_onnx_int8
首次运行时,模型会被内联编译器自动编译。编译也分两步:首先,编译器识别出可以在NPU中执行的层和需要在CPU中执行的层;然后创建子图集——一组给NPU,一组给CPU。最后为每个子图生成针对相应执行单元的指令集。这些指令由两个ONNX执行提供程序(EP)执行(一个用于CPU,一个用于NPU)。首次编译后,编译好的模型会缓存起来,后续部署可以跳过编译。下面是编译过程中打印出的模型信息截图:

编译完成后,模型在NPU和CPU上运行。应用测试提示后,OPT-1.3B模型的响应显示出了正确答案。需要注意的是,这里下载并部署的是一个公开的预训练模型,其准确性是主观的,不一定总能符合预期。强烈建议在生产部署前对公开模型进行微调。下面是测试提示和响应的截图:

现在,使用保存在 opt-1.3b_smoothquant\model_onnx_int8 中的Int8量化模型启动聊天机器人:
python gradio_app_opt_demo_gui.py --model_file .\opt-1.3b_smoothquant\model_onnx_int8
如命令提示符所示,聊天机器人应用在本地主机的1234端口上运行。
打开浏览器,访问 http://localhost:1234。
在浏览器界面上,设置 max_output_token=64,然后在输入框中输入提示“AMD做什么?”。聊天机器人会输出类似下面的响应,同时还会显示KPI(每秒处理的token数)。在这个例子中,大约是每秒4.7个token。

恭喜!你已经成功构建了一个私有的AI聊天机器人。它完全在笔记本上运行,OPT-1.3B是一个大型语言模型(LLM)。
结论
AMD Ryzen AI全栈工具让AI PC上的应用开发变得前所未有的简单——无论是开发者构建AI应用,还是创作者制作创新内容,或者企业主优化工作流程,都能从中受益。如果你有兴趣,可以进一步探索AMD提供的更多教程和示例,发掘更多可能性。
