想建个购物网站,企业通用网站模板,自学学网页设计,韩国美食做视频网站人工智能最直接也是最普及的应用之一肯定是聊天机器人#xff0c;或者叫个人 AI 助理。尽管聊天机器人以各种形式存在了30年#xff0c;但在过去两年中#xff0c;这些个人AI助理才真正成为热门应用。它们已经从前沿技术范畴落地到生活的各个方面、社交场合和商业场景中。 虽…
人工智能最直接也是最普及的应用之一肯定是聊天机器人或者叫个人 AI 助理。尽管聊天机器人以各种形式存在了30年但在过去两年中这些个人AI助理才真正成为热门应用。它们已经从前沿技术范畴落地到生活的各个方面、社交场合和商业场景中。 虽然它们接入门槛低且易于使用你打开个网页或 App 就能使用但许多最好的聊天机器人都是闭源代码。这些平台有自己的好处比如能上网搜东西、有个性化的用户资料来跟聊天机器人互动还能用上现在最好的大语言模型。然而开源社区的技术发展始终与这些闭源产品齐头并进开源工具也有自己的优势例如支持灵活的定制化、可微调和与其他技术进行集成。 在本文中我们将介绍最新和最伟大的开源模型之一LLaMA 3.2。它拥有11B参数、计算机视觉算法在低成本的同时与GPT-4o mini和Claude 3 - Haiku在多种视觉指令调整基准上的性能相当。此外它们的轻量级2B参数模型与SOTA边缘模型如PHI mini it和Gemma 2b的性能相当。我们将从这些模型的特殊之处开始介绍。之后我们将展示如何利用这个强大的开源模型创建个人 AI 助理聊天机器人。这个个人AI助理可以帮助你处理从写作、编程到翻译的任何事情并且能够像处理文本一样轻松地处理图像数据。 准备工作 为了跟随本文后半部分的教程你需要有一定的Python编程经验以及对深度学习的初步理解。同时我们在带领你一步步实践的同时也默认你有一个性能足够的机器以及合适的 GPU可以运行我们提供的代码。 如果你还没有合适的 GPU我们建议你可以先通过云服务获取。毕竟GPU 云服务会比自己购买 GPU 更便宜而且还能灵活配置。不用担心我们会在教程中给你提供低成本获取 H100 GPU 的方法。 先了解一下 LLaMa 3.2 模型 LLaMA 3.2 模型套件包括四个主要模型一个小巧的11B参数的视觉语言模型一个更大的90B参数的视觉语言模型还有两个轻量级的纯文本模型分别为1B和3B参数。前者能够分析和理解文字和图片信息而后者则专注于处理文字内容。每个模型在其所属类别中都展现了顶级或接近顶级的表现。 图片多模态模型效果 LLama 官方认为他们的模型与GPT-4o Mini和Claude 3 - Haiku等知名基础模型的性能相当。我们从上面的图表中可以看到得到了广泛的视觉语言任务基准测试的支持包括数学和解决问题的任务。特别有趣的地方在于11B模型似乎相对较强因为它展示了在较低端的GPU甚至相对较差的硬件上也能运行这些高性能LLMs。这意味着我们可以期待这些模型在使用时能有与顶级封闭源代码模型相近的性能。 图片端侧模型效果 在第二个图表中我们可以看到轻量级、仅文本模型与顶级竞争模型PHI Mini IT和Gemma 2b的报告比较。在所有基准测试中轻量级模型的表现都优于或接近这些知名基础模型。这表明LLaMA 3.2模型可以在较弱的处理器上运行甚至有可能在移动设备上生成文本。 正如我们所看到的模型套件的两个类别都与同等规模的顶级模型的对比甚至可以超越一些较为前沿的封闭的大语言模型。 LLaMA 3.2的优势和劣势 当我们讨论 LLaMA 3.2 的优点和缺点时首先需要明白的是尽管它不像很多闭源工具那样自带各种功能但它可以以闭源模型无法实现的方式进行定制。比如保存了用户信息和个人设置的用户档案、网络连接或搜索功能以及为添加检索增强生成RAG等特性设计的低代码插件这些都不会自动集成到 LLaMA 3.2 中除非我们自己动手添加。 既然这样让我们来看看 LLaMA 3.2 相对于其他现有模型的主要优势有哪些 优势 微调与LoRAs低秩适应能够根据需求定制现有模型这一直是开源模型的最大优势。通过这些技术我们可以轻松地将已经开发得很出色的大型语言模型LLMs进一步专业化无论是制作客户服务聊天机器人还是数学助手可能性几乎是无穷无尽的。顶级性能LLaMA 3.2 的表现与所有尺寸的最佳模型相当包括那些强大的闭源模型。自定义集成像 LLaMA 3.2 这样的模型很容易集成到各种现有的应用程序中无需构建或使用可能既昂贵又难用的API客户端。视觉语言分析LLaMA 在理解和处理图像数据方面给我们留下了深刻印象。它可以完成从光学字符识别OCR、解释到目标检测等各种任务尽管这些功能最终都会以文本形式输出。摘要和重写正如官方发布博客所展示的这些模型在多种文本任务上表现出色尤其在摘要和重写任务上更为突出。成本LLaMA 3.2 不仅可以免费使用非商业用途和下载而且是其类别中最高效的模型之一。即使是轻量级模型也可以在手持设备等性能较弱的处理器上运行。 不足 达到顶尖表现尽管有了很大的进步LLaMA 3.2 仍然没有达到像 Claude Sonnet 或 GPT-4 这样顶级 GPT 模型的水平。网络访问能力如果不做大量的开发工作这些模型无法上网或学习新信息除非有像 RAG 这样的技术来支持。这是当前许多顶级模型如 Anthropic 的模型的一个重要优势。许可需要注意的是与一些完全开源的模型不同LLaMA 的模型只允许非商业用途。 现在我们了解了这个模型的优点所在接下来就展示如何运行演示。这将帮助我们在创建个人助理工具的过程中深入了解模型。 在H100 GPU 服务器上启动LLaMA 3.2 对于这个演示我们将借鉴HuggingFace Projects团队的工作。他们在网站上发布了一个真正完美的Gradio演示使用LLaMA 3.2 11B视觉模型。在继续之前请务必查看他们的之前做的演示。 为了调整应用我们将使用最新发布的 DigitalOcean GPU 云服务器实例。如果你想跟着操作建议按照我们往期写的教程创建一个新的带有 Jupyter Notebook 的 GPU 实例。我们将在 GPU 实例上运行的 Jupyter Notebook 中执行接下来要展示的代码通过 Visual Studio Code 的 SSH 主机功能在本地浏览器中访问。 当你的GPU 服务器启动并运行起来Jupyter Notebook 也已经在运行并且你能够在本地浏览器中访问到它之后就可以继续下一步了。 LLaMA 3.2个人助理应用程序分解 HuggingFace的LLaMA 3.2应用程序本身就很出色。它让你可以与一个强大的聊天机器人聊天能够与我们上传的任何图像互动。这本身就允许我们执行复杂的操作如目标内容识别或目标检测甚至阅读。此外由于它是用Gradio编写的因此完全支持FastAPI可以直接使用它创建的API端点与应用程序互动。 查看下面的代码块其中包含了整个应用程序为了节省空间做了一些小调整。 from transformers import MllamaForConditionalGeneration, AutoProcessor, TextIteratorStreamer
from PIL import Image
import requests
import torch
from threading import Thread
import gradio as gr
from gradio import FileData
import time
import spaces
ckpt meta-llama/Llama-3.2-11B-Vision-Instruct
model MllamaForConditionalGeneration.from_pretrained(ckpt,torch_dtypetorch.bfloat16).to(cuda)
processor AutoProcessor.from_pretrained(ckpt)spaces.GPU
def bot_streaming(message, history, max_new_tokens250):txt message[text]ext_buffer f{txt}messages [] images []for i, msg in enumerate(history): if isinstance(msg[0], tuple):messages.append({role: user, content: [{type: text, text: history[i1][0]}, {type: image}]})messages.append({role: assistant, content: [{type: text, text: history[i1][1]}]})images.append(Image.open(msg[0][0]).convert(RGB))elif isinstance(history[i-1], tuple) and isinstance(msg[0], str):# messages are already handledpasselif isinstance(history[i-1][0], str) and isinstance(msg[0], str): # text only turnmessages.append({role: user, content: [{type: text, text: msg[0]}]})messages.append({role: assistant, content: [{type: text, text: msg[1]}]})# add current messageif len(message[files]) 1:if isinstance(message[files][0], str): # examplesimage Image.open(message[files][0]).convert(RGB)else: # regular inputimage Image.open(message[files][0][path]).convert(RGB)images.append(image)messages.append({role: user, content: [{type: text, text: txt}, {type: image}]})else:messages.append({role: user, content: [{type: text, text: txt}]})texts processor.apply_chat_template(messages, add_generation_promptTrue)if images []:inputs processor(texttexts, return_tensorspt).to(cuda)else:inputs processor(texttexts, imagesimages, return_tensorspt).to(cuda)streamer TextIteratorStreamer(processor, skip_special_tokensTrue, skip_promptTrue)generation_kwargs dict(inputs, streamerstreamer, max_new_tokensmax_new_tokens)generated_text thread Thread(targetmodel.generate, kwargsgeneration_kwargs)thread.start()buffer for new_text in streamer:buffer new_textgenerated_text_without_prompt buffertime.sleep(0.01)yield bufferdemo gr.ChatInterface(fnbot_streaming, titleMultimodal Llama, textboxgr.MultimodalTextbox(), additional_inputs [gr.Slider(minimum10,maximum1024,value250,step10,labelMaximum number of new tokens to generate,)],cache_examplesFalse,descriptionTry Multimodal Llama by Meta with transformers in this demo. Upload an image, and start chatting about it, or simply try one of the examples below. To learn more about Llama Vision, visit [our blog post](https://huggingface.co/blog/llama32). ,stop_btnStop Generation, fill_heightTrue,multimodalTrue)demo.launch(debugTrue) 实际上上面展示的是一个非常简洁的工作流程。首先脚本会将模型文件加载到 GPU 上。然后它启动了一个 Gradio 应用程序让我们可以通过网页浏览器与模型互动。如果我们按照之前提到的文章中的说明操作可以将运行代码块后输出的 URL 复制到 VS Code 的简单浏览器地址栏中然后在我们的浏览器中打开新的 Gradio 窗口。或者你可以将 demo.launch() 函数中的 public 参数设置为 True这样就可以生成一个公开访问的链接。 总的来说当运行时我们得到的结果如下 这个交互式应用程序允许我们使用文本或图像数据输入与模型互动。在我们的实验中我们发现这个过程在图像理解、OCR和目标识别方面非常稳健。我们尝试了各种不同类型的图像并获得了非常好的结果显示出模型在文本和视觉领域之间的深厚融合。 此外该应用程序本身对于正常的LLM任务也相当有效。我们能够用它生成工作的Python代码讲述故事大纲甚至协助撰写这篇博客文章的一小部分总的来说这个应用程序非常多功能我们将继续将其用于我们未来的LLM任务。 写在最后 LLaMA 3.2的性能令人难以置信。在开源发布方面它代表了向过去一年主导市场的流行封闭源代码模型的质量迈出了具体一步。它几乎能够做它们能做的任何事情包括从代码生成到视觉理解再到长篇故事写作。我们鼓励所有读者在DigitalOcean GPU Droplet上尝试HuggingFace项目demo。Digitalocean 也上线了一键部署 HUGS 的功能可以进一步简化你的AI项目开发工作。 大语言模型应用仍然具有无穷的可能性。从动态安全摄像头到全面的供应链管理再到更好的AI聊天机器人LLaMA已经可以用来改善我们周围的各种应用场景。我们很感兴趣的一点是LLaMA 3.2 是否可以被适配成 T5 模型在流行的文字转图像建模中的合适替代品。这种技术正被像 PixArt 这样的团队在其最新模型中采用以达到最先进的水平。 最后如果你想尝试更多模型却苦于没有合适的 GPU。欢迎尝试 DigitalOcean 的 GPU Droplet 云服务器我们提供了包括 H100、A6000、A5000 等 GPU 资源欢迎联系 Digitalocean 中国区独家战略合作伙伴卓普云了解更多详情。