在Jetson上玩转大模型Day5:Ollama指令模式的智能助手
在Jetson上玩转大模型Day6:Ollama的Webui智能助手
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
在Jetson上玩转大模型Day8:多模態搜圖的NanoDB
前面已经简单介绍过在Jetson AI Lab所提供的NanoLLM开发平台上的API基本内容,使用这些API可以非常轻松地开发并整合比较复杂的应用,现在就用一个比较具有代表性的Llamaspeak对话机器人项目,做个简答的比较。
这个项目的工作原理如下图:
这个Llamaspeak项目在2023年提出第一个版本时,是以NVIDIA的RIVA语音技术结合Text-Generation-Webui界面与LLM大语言模型而成,整个安装的过程是相当复杂的,主要包括以下步骤:
1.安装与啓动RIVA Client服务:完整的安装与啓动教程在https://github.com/dusty-nv/jetson-containers/tree/master/packages/audio/riva-client里面,包括需要在NVIDIA的NGC上进行注册、下载执行脚本、修改配置文件、下载ASR与TTS所需要的模型,最后再进行啓动对应版本的容器;
2.载入配套的Text-Generation-Webui所需要的LLM模型:参考的安装程序在https://github.com/dusty-nv/jetson-containers/tree/master/packages/llm/text-generation-webui。
3.啓动HTTPS/SSL:浏览器需要使用HTTPS才能访问客户端的麦克风,因此需要创建一个自签名的SSL证书和密钥,如下指令:
$ cd /path/to/your/jetson-containers/data
$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'
4.执行Llamaspeak容器:
$ jetson-containers run --workdir=/opt/llamaspeak \
--env SSL_CERT=/data/cert.pem \
--env SSL_KEY=/data/key.pem \
$(./autotag llamaspeak) \
python3 chat.py --verbose
现在就可以打开浏览器,输入指定位置与端口号,开始以用户端(如笔记本)的麦克风与这个应用开始交流。
事实上有经验的工程师,可能都要花一整天时间,才有机会完成整个Llamaspeak系统的搭建,因爲过程中需要独立安装的东西太多,并且模型之间的交互关系较爲复杂,一般初学者要安装成功的机会并不高。
现在使用NanoLLM开发环境重新搭建Llamaspeak应用,就变得非常简单,而且在旧版只支持语言对话的功能之上,还增加了对多模态大语言模型的支持,这样的使用性就变得非常高了。现在只要执行以下指令,就能实现Llamaspeak的功能,不过在执行之前,请记得先到huggingface.co去申请一个TOKEN:
$ jetson-containers run --env HUGGINGFACE_TOKEN=$HUGGINGFACE_TOKEN \
--name llamaspeak --workdir /opt/NanoLLM $(autotag nano_llm)
# 进入容器后
$ python3 -m nano_llm.agents.web_chat --api=mlc \
--model meta-llama/Meta-Llama-3-8B-Instruct --asr=riva --tts=piper
这里使用Meta-Llama-3-8B-Instruct模型,执行纯语言的对话。如果系统里面没有这个模型,就会从HuggingFace去下载,如下图所示:
最后停留在下面画面:
现在我们在浏览器里输入“https://127.0.0.1:8050”,就会进入操作界面:
这里我们尝试用文字输入问题,虽然llama-3-8b-instruct模型能支持中文,但是在ASR与TTS两端均未提供中文支持的能力,因此文字部分虽然可以用中文回答,但是语音输出部分就没办法了。
如果想要支持中文的语音输入识别与输出的话,就需要修改以下两个地方:
输入的中文识别:修改/opt/NanoLLM/nano_llm/plugins/speech/riva_asr.py,将里面的”language_code=” 从 ”en-US” 改成 ”zh-CN”
输出的中文语音:修改/opt/NanoLLM/nano_llm/plugins/speech/piper_tts.py,将里面的”en_US-libritts-high”模型(有两处)改成”zh_CN-huayan-medium”模型。这里可以选择的中文模型,可以在 /data/models/piper/voices.json 里找到,请用关键字 ”zh-CN”搜素,会找到'zh_CN-huayan-medium'与'zh_CN-huayan-x_low'两组可用的中文语言
修改完这两处之后,重新执行以下指令:
$ python3 -m nano_llm.agents.web_chat --api=mlc \
--model meta-llama/Meta-Llama-3-8B-Instruct --asr=riva --tts=piper
现在试试从麦克风用中文与Llamaspeak交谈,是否能如预期地识别出我们所说的话,并且以用中文语音回答呢?如果一切顺利,你现在就能开始有一个博学多闻的对手,可以跟你天南地北聊天了。