如何使用 Groq 在 4 秒内得到 rp2040 的答案

如何使用 Groq 在 4 秒内得到 rp2040 的答案

转发: How to get an answer to rp2040 in 4 seconds with Groq

Surf5 Design Contest

项目介绍

项目概况

如果你已经做了一个Chatgpt和Gemini连接到rp2040的项目,我们将做一个开源模型的项目。我们将利用几天前发布的meta的llama3和groq的LPU芯片进行创新。

我相信它足以替代制造商网站上的示例,并使我们能够以更快的响应来升级我们的项目。对于需要快速响应的AIoT例子来说足够适用。

groq是什么?

Jonathan Ross 是前 Google TPU 架构师,现任 Groc 初创公司的首席执行官。为什么它在这里通过创建基于 LPU 的芯片,我们创建了一个可以比 nvidia 更有效地推断模型的环境。

比 nvidia 更高效的模型推理。我们与三星有代工合同,可能会进入全面生产,但 Groq 已声明我们不销售芯片。像Nvidia这样销售芯片的环境对于初创公司来说是很困难的,我们说我们会在云环境中做推断的过程。目前,您可以在Groq的官方网站上参考开放的LLM模型。
其中之一是上周发布的 Lamar 3。

GroqChat

正如您所看到的,它每秒生成数百个令牌。使用传统的 ChatGPT 创建包含这么多标记的句子需要 20 多秒。

LLaMA3是什么?

Lama 3 上周五刚刚发布,其当前的基准测试也与 GPT-4 相当。 8B 模型优于 GPT3.5,70B 与 gpt-4 相当。这是在 24T 对集群 GPU 上训练的模型。这是 BigTech,所以你可以看到使用天文数字般荒谬的 GPU 进行训练是可能的。我不知道详细信息,因为该论文未公开,但我阅读并审阅了 Lama3,所以如果您好奇,可以在 Wiznet Tech 博客上阅读。

项目教程

Groqcloud

1.进入groq云主页,注册,获取API KEY,运行旁边的python代码。如果安装了groq库就好了,但是当然,我们不能在pico中安装该库,所以我们必须通过API通信来运行代码。

2. 获取和阅读curl代码并不难:您只需要定义端点、标头设置以及如何发送数据即可。在 Micro Python 中,代码如下所示。模型部分,可以在Docs中设置模型名称llama3。

def send_chat_request(api_key, user_message):
    url = "https://api.groq.com/openai/v1/chat/completions"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    payload = {
        "messages": [{"role": "user", "content": user_message}],
        "model": "llama3-70b-8192"
    }

    start_time = utime.ticks_ms()  # start time

    response = urequests.post(url, headers=headers, json=payload)
    elapsed_time = utime.ticks_diff(utime.ticks_ms(), start_time)  

    if response.status_code == 200:
        try:
            content = response.json()['choices'][0]['message']['content']
            return content, elapsed_time  # 내용과 처리 시간 반환
        except Exception as e:
            raise Exception("Failed to decode JSON from response: " + str(e))
    else:
        raise Exception(f"API error ({response.status_code}): {response.reason}")

我是通过app.py实现的。 init_ethernet函数是初始化以太网,在main函数中输入api key,初始化以太网,通过While语句启动交互式响应聊天。这就是它的结束。

from machine import Pin, SPI
import network
import utime
import urequests

def init_ethernet(timeout=10):
    spi = SPI(0, 2_000_000, mosi=Pin(19), miso=Pin(16), sck=Pin(18))
    nic = network.WIZNET5K(spi, Pin(17), Pin(20))
    nic.active(True)

    start_time = utime.ticks_ms()
    while not nic.isconnected():
        if (utime.ticks_diff(utime.ticks_ms(), start_time) > timeout * 1000):
            raise Exception("Ethernet connection timed out.")
        utime.sleep(1)
        print('Connecting ethernet...')
    print(f'Ethernet connected. IP: {nic.ifconfig()}')

def send_chat_request(api_key, user_message):
    url = "https://api.groq.com/openai/v1/chat/completions"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    payload = {
        "messages": [{"role": "user", "content": user_message}],
        "model": "llama3-70b-8192"
    }

    start_time = utime.ticks_ms()  # 시작 시간 기록

    response = urequests.post(url, headers=headers, json=payload)
    elapsed_time = utime.ticks_diff(utime.ticks_ms(), start_time)  # 경과 시간 계산

    if response.status_code == 200:
        try:
            content = response.json()['choices'][0]['message']['content']
            return content, elapsed_time  # 내용과 처리 시간 반환
        except Exception as e:
            raise Exception("Failed to decode JSON from response: " + str(e))
    else:
        raise Exception(f"API error ({response.status_code}): {response.reason}")

def main():
    api_key = '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'
    init_ethernet()

    while True:
        user_input = input("User: ").strip()
        if user_input.lower() == "exit":
            print("Exiting...")
            break
        elif not user_input:
            continue

        try:
            response_content, time_taken = send_chat_request(api_key, user_input)
            print(f"LLaMA Response: {response_content} (Processed in {time_taken} ms)")  # 내용과 시간 출력
        except Exception as e:
            print("Error: ", e)

if __name__ == "__main__":
    main()

我在函数中添加了 start_time = utime.ticks_ms() 来记录滴答数。 API调用前仅需4-5秒。这比 Gemini 或 gpt 调用 API 的时间节省了 2-3 倍。它还可以很好地响应英文信息提示。韩语仍然是一个问题,需要通过额外的微调来训练模型。

结果

更多来源:Wiznetmaker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值