我們在前面所介紹的各項應用,包括SAM、OWL-Vit、Text-Generation-Webui、stable-diffusion-webui等等,都是基於個別項目環境去搭建,目的是讓讀者比較輕鬆地掌握不同技能的知識。但是這種方式對於要開發一個實用的應用系統來說,就顯得過於零碎,並且難以整合,這又不符合我們一開始所設定的目標,因此提供一套更有系統的開發環境,就變得非常重要。
在Jetson AI Lab項目中的Nano_LLM項目,就爲我們提供很完整的開發環境,項目作者爲我們提供非常豐富的Python API,這樣讓我們就能很有彈性地去建構實用的AI應用,例如結合語音、對話、圖像、視頻等多模態的應用,甚至是結合多智能體(agents)形成完整工作流的智能應用等等。
這些Python API開發接口主要有如下所列的七大類:
插件将输入接收到处理队列中,对其进行处理,然后通过其输出通道输出结果。每个输出通道表示模型具有的一种输出类型(例如,ChatQuery插件在令牌、单词和句子级别公开输出),每个输出通道可以连接到任意数量的其他插件节点。
默认情况下,插件是线程化的,并在自己的队列中运行,但可以通过将threaded=False传递给插件的初始化器来配置为内联(无线程)运行。它们也可以用interrupt()函数中断,以放弃当前请求和输入队列中的任何剩余数据,例如,當你想提前停止LLM生成,或静音TTS输出。
创建新插件类型时,实现process()函数来处理传入数据,然后返回传出数据。您还可以使用简单的回调函数来接收数据,而不需要定义自己的插件类(如chat_Plugin.add(my_function)来接收聊天输出)
除了上述的Python API之外,項目還提供一些基本指令,讓我們不需要寫代碼就能直接調用指令來實現某些基本功能,例如下面指令:
$ python3 -m nano_llm.completion --api=mlc \
--model meta-llama/Llama-3-8b-chat-hf \
--quantization q4f16_ft \
--prompt 'Once upon a time,'
與下面的 Python 代碼是等效的:
from nano_llm import NanoLLM
model = NanoLLM.from_pretrained(
"meta-llama/Llama-3-8b-hf",
api='mlc',
api_token=($HUGGINGFACE_TOKEN) # 自己的HUGGINGFACE_TOKEN
quantization='q4f16_ft'
)
response = model.generate("Once upon a time,", max_new_tokens=128)
for token in response:
print(token, end='', flush=True)
後面我們就會帶着大家開始安裝Nano_LLM開發環境,並且演示一些比較實用的交互式範例,讓大家更容易上手。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。