打造AI 驱动的医疗助理:利用 OpenVINO™ 实现就诊新体验
作者 | Anisha Udayakumar 英特尔AI软件布道师
武卓 英特尔AI软件布道师
介绍
我们都曾坐在医生的候诊室里,时间一分一秒的过去,焦虑在一点一滴的增加。对于患者来说,这种等待可能会特别紧张,尤其是那些患有严重或慢性疾病的患者。与此同时,医生们也面临着自己的挑战:紧迫的日程安排和在有限时间内提供全面诊断的压力。而这里就是人工智能可以产生重大影响的地方。
想象一下,一个人工智能助手甚至在患者踏入医生办公室之前就开始与他们互动了。它耐心地倾听患者的种种担忧,收集有关他们的症状和病史的全面信息,并为医生提供详细的总结。
这样,当病人去看医生时,很多基础工作已经提前做好了,使得整个医生的问诊过程更快、更有针对性。这个医疗 AI 助手工作的整体过程如下。
创建这样的 AI 助手涉及部署多个先进的 AI 模型,包括自动语音识别 (ASR) 和大语言模型 (LLM)。
这些模型是计算密集型的,需要大量资源才能有效运行。如果不进行优化,实时运行这些模型可能会很慢且占用大量资源,这在快节奏的医疗看诊环境中是不切实际的。因此,模型优化和高效部署变得至关重要。
为了应对这些挑战,我们利用了 OpenVINO™ 工具套件。这个强大的框架在英特尔硬件上优化和部署 AI 模型,从而能够显著提高推理性能并确保资源的有效利用。OpenVINO™ 还提供了在各种设备上部署这些模型的灵活性,使其成为实际应用的多功能解决方案。以下是我们如何使用此工具套件构建自定义 AI 医疗助理的方法。
逐步实现的过程如下
如上所述,鉴于此AI医疗助手的功能,其工作流程可以描述如下:
因此,从设置环境到运行应用程序的一步步地说明如下。
1. 搭建环境
首先要做的事:环境搭建。该AI医疗助手在 Python 3.8 或更高版本上运行。以下说明介绍了在 Ubuntu 和 Windows 上如何进行设置。
对于Ubuntu系统, 你需要安装必要的库和工具:
sudo apt install git gcc python3-venv python3-dev
注意:如果您使用的是 Windows,可能还需要安装 Microsoft Visual C++ Redistributable。
(https://aka.ms/vs/16/release/vc_redist.x64.exe)
2. 创建虚拟环境
为了保持整洁和易于管理,我们创建了一个虚拟环境。这种隔离的环境确保了我们的依赖项被完整的包含进去。
对于Ubuntu系统来说:
python3 -m venv venv
source venv/bin/activate
对于Windows系统来说:
python3 -m venv venv
venv\Scripts\activate
3. 克隆仓库
接下来,我们克隆存放我们项目的仓库。此步骤在两个操作系统中是一致的:
git clone https://github.com/openvinotoolkit/openvino_build_deploy.git
cd openvino_build_deploy/ai_ref_kits/custom_ai_assistant
4. 安装依赖项
激活虚拟环境后,我们安装必要的软件包:
python -m pip install --upgrade pip
pip install -r requirements.txt
5. 访问和设置模型
我们利用 Meta 的 LlaMA 模型进行自然语言理解。访问这个模型涉及通过 Hugging Face 进行身份验证:
huggingface-cli login
按照提示操作,并使用你在Meta AI 网站的同一电子邮件进行身份验证。此步骤对于下载和使用 LlaMA 模型至关重要。
使用 OpenVINO™ 进行转换和优化
为了使模型在实际应用中效率更高,我们需要转换和优化它们。我们是这样做的:
自动语音识别 (ASR) 模型
python convert_and_optimize_asr.py --asr_model_type distil-whisper-
large-v2 --precision int8
以上脚本用于转换和优化 ASR 模型,执行权重量化以增强性能。
了解 ASR 转换脚本:
在 Optimum-Intel 的帮助下,将 ASR 模型转换为 OpenVINO IR 格式并执行权重压缩就像只运行一行代码一样简单,如上述脚本所示。此外,它还允许您仅通过一种配置就能够选择导出模型的数据精度。使用量化技术,如权重压缩,可以显著减小模型的大小,并且在保持良好模型精度的同时,推理速度也大大提高。因此,在上述脚本中,您可以选择 int8 作为数据精度格式。
对话模型(LlaMA):
python convert_and_optimize_chat.py --chat_model_type llama3-8B --
precision int4
通过量化权重,此脚本可确保对话模型在 Intel 硬件上高效运行。
了解对话模型转换脚本:
将权重压缩导出并执行到聊天模型也是使用 Optimum-Intel 执行的。鉴于对话模型包含数十亿个参数,建议导出模型并将模型权重压缩为 INT4 数据精度,这可以在精度仅略有下降的情况下,显著减少运行推理时所需的模型大小和内存占用,尤其是在计算资源和内存存储有限的边缘设备或 AI PC 上。
运行应用程序
准备好模型后,我们使用 Gradio 启动应用程序,这是一个用户友好的界面,用于与我们的 AI 助手进行交互:
python app.py --asr_model_dir path/to/asr_model --chat_model_dir
path/to/chat_model
Gradio 提供了一个本地 URL,通常为 http://127.0.0.1:XXXX,用于与助手交互。对于公共可访问性,请使用 --public_interface 标志。
导航到 Gradio URL, 您将找到一个带有麦克风图标的界面。单击它,说出你的问题,然后观看助手以文本形式处理和回复。这种互动体验展示了助手理解和参与有意义的对话的能力。
多语言支持的扩展
鉴于 OpenVINO™ 为优化和加速生成 AI 模型的推理提供了广泛支持,AI 医疗助手可以轻松扩展以支持更多语言,而不仅仅是英语。以中文为例,以下步骤展示了如何扩展以使 AI 助手能够以中文工作。
为 ASR 和对话添加新模型:
若要更改 ASR 模型,请按照下列步骤操作:
- 修改 MODEL_MAPPING: 将所需的模型添加到 MODEL_MAPPING 字典.
MODEL_MAPPING = {
"distil-whisper-large-v2": "distil-whisper/distil-large-v2",
"new-model": "path/to/your/new-model",
}
- 修改模型选择配置
parser.add_argument("--asr_model_type", type=str, choices=["distil-whisper-
large-v2", "path/to/your/new-model"],
default="distil-whisper-large
-v2", help="Speech recognition model to be converted")
要运行用于中文语音识别的 ASR 模型,可以使用以下命令:
python convert_and_optimize_asr.py --asr_model_type belle-distilwhisper-
large-v2-zh --precision int8
可以对聊天模型进行类似的更改以添加新模型,并且要以中文运行聊天模型,您可以运行以下命令
python convert_and_optimize_chat.py --chat_model_type qwen2-7B --
precision int4
- 运行 app.py
最后, 为了让 AI 助手用中文工作,使用以下命令运行“app.py”
python app.py --asr_model_dir path/to/belle-distilwhisper-large-v2-zh --
chat_model_dir path/to/qwen2-7B
OpenVINO™
结语
现在,您已经掌握了启动和运行 AI 驱动的医疗助手的基本步骤。如果您有兴趣了解如何为不同行业定制此助手并使用基础套件集成各种模型,请查看第二部分以获取详细的提示和其他指导。祝您编程愉快!