深入探索 Groq:颠覆性的语言处理单元(LPU)如何改变 AI 计算

深入探索 Groq:颠覆性的语言处理单元(LPU)如何改变 AI 计算

首页休闲益智2048超级赢家更新时间:2024-09-22

前言

你可能听说过一家名为 GROQ 的公司最近推出了一种新的 AI 语言界面,这在 AI 圈里引起了不小的波动。这篇文章,我要跟你聊聊这个话题为何如此引人注目,并告诉你怎样能够利用 Groq 的 API 在 Python 中实现一些实际的操作。

什么是 Groq?

Groq 是一家由 Jonathan Ross 在 2016 年创立的公司,致力于为 AI 任务,尤其是语言处理任务,提供更加简化的计算解决方案。公司名字的灵感来源于一个意味着深刻直觉理解的术语。不过别把 Groq 和 Elon Musk 的 X AI 产品 Grok 搞混了,它们完全是两码事。

Groq 并不是一家大语言模型(LLM)公司,而是专注于开发用于加速机器学习和人工智能计算的硬件和软件解决方案的技术公司。它以创建为深度学习等任务优化的高效率处理单元而著称,而深度学习正是大语言模型发展和运营的关键技术。Groq 的产品和技术旨在满足各类 AI 应用的计算需求,包括但不限于大语言模型的应用。

自从 Groq 框架面市以来,其速度和效率让人印象深刻,与 AI 领域的其他流行工具相比,其词元处理速率高达每秒数百个。仅在推理性能方面,就通过公共基准测试实现了高达 15 倍的吞吐量提升。

例如,在评估大语言模型(LLM)推理提供者的 LLMPerf 排行榜中,其推理引擎表现突出。这个基准测试关注的关键性能指标包括:

如果以上这些还不足以吸引你试试 Groq,那么提升性能的原因可能会:Groq 开发了一种新的处理单元,称为 LPU 或语言处理单元。

语言处理单元(LPU)是一项可能引领革命的创新,目标是彻底改变 AI 处理方式。让我们深入了解 LPU 是什么以及它与传统 GPU 的不同之处:

什么是 LPU?

LPU 是专为处理计算密集型应用(特别是那些包含序列成分的应用)设计的一种全新端到端处理单元系统。它专注于处理基于语言的任务,如自然语言处理(NLP)和大语言模型(LLMs)。

与常规芯片执行并行处理(即同时处理多个任务)不同,LPU 以顺序方式处理任务。这种独特的方法使其在语言理解和生成方面表现卓越。

可以把它想象成接力赛跑。每个参赛者(芯片)将接力棒(数据)递给下一个,从而大大加快了整个过程。LPU 的顺序处理确保了其高效运行。

LPU 的概念源于 2016 年 AlphaGo 与 Lee Sedol 的围棋比赛。由 DeepMind 开发的 AlphaGo 赢得了比赛。

然而,在正式比赛前一个月,AlphaGo 输掉了一场练习赛。鉴于此,DeepMind 的团队将 AlphaGo 转移到了张量处理单元(TPU)上,这是一种专为神经网络推理设计的专用芯片。TPU 显著提高了 AlphaGo 的性能,最终赢得了比赛。

受到处理能力在解锁复杂计算潜力中所起关键作用的启发,Jonathan Ross(最初在 Google 的 TPU 项目工作)在 2016 年创立了 Groq Inc.。Groq 的使命是为基于语言的任务提供创新解决方案。在硬件开发之前,他们优先考虑软件和编译器的创新,确保编程可以指导芯片间的高效通信。最终成果是语言处理单元(LPU),这是一种专门设计来迅速应对大语言模型(LLMs)在计算密度和内存带宽方面带来挑战的工具。

LPU 与 GPU

目前,AI 及其应用几乎完全依赖 GPU(图形处理单元)。这些芯片在各种任务中表现出色,归功于它们的并行处理能力。然而,LPUs 在处理复杂的语言任务方面专业性更强,可能会超过 GPU 在 NLP 和 LLMs 方面的效率。与 GPU 同时处理多种工作负载不同,LPUs 专注于顺序处理,使其成为处理语言相关操作的理想选择。Groq 最近的演示,包括以每秒超过 100 个词元的速度执行 Llama-2(70B)LLM,并通过 Mixtral 实现每个用户近 500 词元/秒的速度,凸显了 LPU 的卓越能力。

总之,LPU 代表了计算能力的范式转变,为语言密集型任务提供了 GPU 的专业替代品。Groq 的创新方法强调了软件驱动的效率,使 LPU 成为 AI 处理领域的有力竞争者。

好了,如果以上还没有让你跃跃欲试 Groq,那我也不知道还有什么能吸引你了。在本文的剩余部分,我将向你展示如何访问 Groq 以及如何在 Python 中使用其 API。

访问 Groq

访问 Groq 非常简单且免费(截至撰写本文时)。只需前往Groq 官网,并使用您的电子邮件注册/登录。

如果你愿意,你可以试试登录后显示的 Chat 界面。你会发现有几个 LLM 模型可用,包括 Mistral 的 Mixtral 8x7B,Meta 的 Llama2 70B 和 Google 的 Gemma 7B。我们将在演示中使用 Mistral 模型。

由于我们打算通过其 API 访问 Groq,我们需要创建一个 API 密钥。在屏幕的左侧点击链接,然后点击出现的按钮。之后,为你的密钥命名,点击提交,Groq 会为你创建一个密钥。记住这个密钥,因为你稍后会需要它。如果你忘记了,当你需要时,只需再创建一个即可。

在 Python 代码中使用 Groq

拿到我们的 API 密钥后,我们可以开始写一些 Python 代码来展示 Groq 的能力了。不过,在此之前,最好是为我们的工作设置一个单独的编程环境。我个人习惯使用 conda,但你可以选择任何适合你的方法。

如果你打算使用 conda 且还没有安装它,你必须先安装 Miniconda(推荐)或 Anaconda。

# 创建我们的测试环境 conda create -n groq_test python=3.11 -y

环境创建好之后,使用以下命令切换至该环境,然后我们可以安装所需的所有库。

# 激活环境 conda activate groq_test # 安装必要的库 pip install groq # 安装 Jupyter conda install jupyter -y

现在,在命令提示符中输入。你应该会看到一个 jupyter 笔记本在浏览器中打开。如果没有自动打开,你可能会看到命令后显示大量信息,在这些信息的底部附近,会有一个 URL,你应该复制并粘贴到浏览器中以启动 Jupyter 笔记本。

你的 URL 会与我的不同,但它应该看起来像这样:

<http://127.0.0.1:8888/tree?token=3b9f7bd07b6966b41b68e2350721b2d0b6f388d248cc69da>

好,我们开始编码。我会将代码分成若干部分,并在每个部分中加入注释来说明发生了什么。

实现一个简单的聊天框

# 需要导入的库 import groq import os # 设置 API 密钥 # os.environ["GROQ_API_KEY"]="YOUR_GROQ_API_KEY"

# 设置客户端接口 # 提出我们的问题 # 打印出答案 # from groq import Groq client = Groq( api_key=os.environ.get("GROQ_API_KEY"), ) chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": "法国的首都在哪里", } ], model="mixtral-8x7b-32768", ) print(chat_completion.choices[0].message.content) >> 法国的首都是巴黎。 巴黎是世界上最受欢迎和访问最多的城市之一,以其标志性地标如埃菲尔铁塔、卢浮宫、巴黎圣母院和香榭丽舍大街而闻名。它还以其艺术、时尚、美食和文化而著称。这个城市拥有丰富的历史,并在塑造我们今天所知道的世界中发挥了重要作用。 一个国家的首都通常是其政府的所在地,以及重要机构和组织的位置。在法国,法国政府和许多行政机构都设在巴黎。这座城市也是金融、商业和旅游的重要中心,使其成为法国乃至整个欧洲的重要枢纽。 添加系统消息

系统消息让你能够“影响”LLM 对你问题的回答方式。在这个例子中,我们会提出一个问题,并让 LLM 以 1930 年代黑手党匪徒的语言风格进行回答。

chat_completion = client.chat.completions.create( # # 必要参数 # messages=[ # 设置一个可选的系统消息。这会设定助手的行为方式,并可以用来提供具体指示,让它在整个对话中如何表现。 { "role": "system", "content": "You are a helpful assistant. Answer all questions in the style of a 1930's Mafia gangster" }, # 设置一个用户消息让助手回应。 { "role": "user", "content": "Explain what Groq is", } ], # 将生成完成的语言模型。 model="mixtral-8x7b-32768", # # 可选参数 # # 控制随机性:降低结果导致的随机完成减少。 # 当温度接近零时,模型将变得确定性和重复性。 temperature=0.5, # 生成的最大词元数。请求可以使用最多 # 2048 个词元,包括提示和完成之间共享。 max_tokens=1024, ) # 打印 LLM 返回的完成。 print(chat_completion.choices[0].message.content) >> 没问题,伙计。所以,你在问 Groq 是啥,对吧?好吧,让我告诉你—— 它不是某种小打小闹的玩意儿,我可以告诉你这点。Groq 在处理器和计算世界里可是个真正的亮点。就是这家公司,凭借它们独特的处理能力方法,引起了轰动。 你看,大多数计算机啊什么的,它们使用的是所谓的向量处理单元,或者 GPU,来满足它们所有的计算需求。 但 Groq 不是这样。哦不,他们做了一些不同的事情。他们自己打造了一种定制的、专门构建的处理器,从头到尾被设计来擅长处理特定任务。 我说的是机器学习、人工智能和其他高性能计算任务。Groq 的处理器能够每秒处理数十亿次操作,同时消耗的电力比一个灯泡还少。那不是挺了不起的吗? 所以,简而言之,Groq 是一家正在研发一些真正高级、高性能处理器的公司,专门用于特定任务。这就是关于 Groq 的全部信息,明白了吗? 摘要和 RAG

在我们的最终示例中,我们将总结一段较长的文本,然后就该文本提出一个具体问题。这段文本大约有 15,000 个单词,是我从 Project Gutenberg 网站下载的一本名为《木材的机械性质》的书的第一章。

你可以从这里下载这本书,

https://www.gutenberg.org/cache/epub/12299/

我们正在使用的 Mistral 模型的最大上下文长度为 32K 词元,所以它应该可以很好地处理这个任务。

from groq import Groq # 读取文本到一个变量中 # with open("d:/test/wood.txt", "r") as file: data = file.read() client = Groq( api_key=os.environ.get("GROQ_API_KEY"), ) stream = client.chat.completions.create( # # 必要参数 # messages=[ { "role": "system", "content": "You are a helpful assistant. Summarize the content in this chapter" }, # 设置一个用户消息让助手回应。 { "role": "user", "content": f"{data}", } ], model="mixtral-8x7b-32768", temperature=0.1, max_tokens=25000, stream=True, ) # 打印流式响应中 LLM 返回的逐步内容。 for chunk in stream: print(chunk.choices[0].delta.content, end="") >> 这一章讨论了木材的机械性质,包括刚度和弹性、拉伸强度、压缩或抗压强度、剪切强度、横向或弯曲强度、韧性、硬度、可裂性和回弹性。这些性质对于确定木材在结构和建筑用途中的使用非常重要,也适用于家具、车辆、工具和工具手柄。章节还讨论了应力和应变之间的关系、应力和应变的测量,以及不同种类的内部应力。它解释了刚度、弹性极限和永久变形的概念,并提供了各种类型木材的机械测试结果表格。章节还讨论了弯曲时弹性极限下纤维应力与切割块的抗压强度之间的关系,以及 41 种木材在绿色条件下沿着纹理的小块的剪切强度。没有

让我们看看是否能针对上下文中的特定部分提出一个更具体的问题。

from groq import Groq client = Groq( api_key=os.environ.get("GROQ_API_KEY"), ) stream = client.chat.completions.create( # # 必要参数 # messages=[ # 设置一个可选的系统消息。这会设定助手的行为方式,并可以用来提供具体指示,让它在整个对话中如何表现。 { "role": "system", "content": "You are a helpful assistant. In what two senses is hardness used when talking about wood" }, # 设置一个用户消息让助手回应。 { "role": "user", "content": f"{data}", } ], model="mixtral-8x7b-32768", temperature=0.5, max_tokens=25000, stream=True, ) # 打印流式响应中 LLM 返回的逐步内容。 for chunk in stream: print(chunk.choices[0].delta.content, end="") >> 讨论木材时,硬度涉及到两个主要属性: 1. 抗压缩性:这是木材在受到力作用以压入或压迫一个尖锐物体时抵抗变形的能力。通常使用一种称为硬度计的设备来测量,在特定负载下尖点的穿透深度。 2. 抗磨损性:这是木材抵抗因摩擦或与其他表面摩擦产生的磨损和损伤的能力。通常通过确定使用或测试特定时间后材料损失的数量或表面粗糙度的变化来测量。 这两个属性在决定木材产品的耐用性和使用寿命,以及它们适用于特定应用场景的程度方面都非常重要。例如,像橡木和枫木这样的硬木种类经常用于地板和家具,因为它们具有高硬度和耐磨性,而像松木和雪松这样的软木种类通常用于建筑和框架,因为它们硬度较低且更易加工。None 总结

Groq 确实很强悍——毫无疑问,也许是让日常消费者解锁 LLM 使用的关键。就响应速度和与其他系统的比较而言,我尝试使用 Anthropic 的 Claude 模型来总结同一段文本。我不得不将文档减少约 400 行才能使用他们的在线聊天框。当我得到回应时,返回答案花了 22 秒。相比之下,使用 Groq 我在 5.68 秒内得到了答案。

资源:

点赞关注 获取更多资讯,并在 头条 上阅读我的短篇技术文章

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved