Meta社のLlama3の特徴とgroqを使ったチャットボットのコードを紹介
こんにちは、にゃんたです。
今回は、Meta社の最新言語モデル「Llama3」について、その特徴や注目ポイントを分かりやすくお伝えしつつ、実際にLlama3を使える Groqのサービスについても紹介していきます。
1. Llama3 の特徴
Llama3は、Meta社がリリースした大規模言語モデルです。 8Bと70Bという2つのサイズのモデルが公開されました。 ここでBはパラメータ数を表しており、70Bは700億のパラメータを持つモデルという意味です。
特に70Bモデルの性能が注目されており、Googleの最新モデルであるGemini Pro1.5に匹敵する能力を持つとされています。英語でのタスクにおいては、かなり高い精度が期待できそうです。
ただし現時点では、学習データの95%が英語テキストであるため、日本語での性能はまだ未知数です。 しかし、今後数か月以内にマルチモーダルや多言語対応のモデルがリリースされる予定とのこと。 私たち日本語ユーザーにとっても楽しみなニュースですね。
さらに現在Meta社は、GPT-4に匹敵する400Bという超大型のモデルを学習中だそうです。 その精度は、Anthropic社のClaude3の最上位モデル「Opus」に迫る勢いとのこと。 もしこの400Bモデルが一般公開されれば、言語モデル業界のゲームチェンジャーになるかもしれません。
2. Llama3 の注意点
ここで一点注意が必要なのは、Llama3は完全なオープンソースではないということです。 モデルは誰でもダウンロードして使用できますが、商用利用には条件があったり、派生モデルの配布にも制限があったりします。
例えばLlama3のモデルを派生させる場合は、モデルの名前の冒頭に「Llama3」と付ける必要があると書かれていますね。
この辺りは従来のオープンソースとは少し趣が異なるので、利用する際はライセンスをよく確認する必要がありそうです。
3. Groq のサービス概要
Llama3のようなモデルを動かすには膨大な計算リソースが必要ですが、現在Groqという会社がAPIを通じてLlama3の実行環境を無料で提供しています。
Groqは独自開発のAIチップによって、最高クラスの速度と低価格を実現しているのが特徴です。 ユーザーはAPIを呼び出すだけで、簡単にLlama3を利用できます。
実際にGroqの性能を他社と比較してみると、その優位性が明らかになります。 下の図は、各社のAIサービスにおける推論速度と価格をプロットしたものです。
縦軸が速度、横軸が価格を表しており、グラフの左上にあるほど高速かつ安価であることを示しています。 Groqはダントツの性能を誇っており、同程度の価格帯であるDeepInfraと比べても数倍以上の速度を実現しています。
無料プランでも十分な性能を発揮できますが、大量のリクエストを送る場合は制限があるので注意が必要です。 具体的には、1分間に30リクエストまで、最大9,000トークンまでという制限があります。
ただ、この制限の範囲内でも、Llama3の性能をフルに体験できる十分な量だと思います。 今後、Llama3の400Bモデルが登場した際にも、Groqはその実行環境として最有力候補の一つになりそうですね。
4. Llama3とGroqを使ったチャットボット作成
最後に、Llama3とGroqを実際に使ってチャットボットを作成する手順をご紹介します。streamlitを使って簡単に動作できるので興味がある人は使ってみてください。
import os
from pathlib import Path
import streamlit as st
from dotenv import load_dotenv
from groq import Groq
load_dotenv(Path(__file__).parent / ".env")
class GroqAPI:
def __init__(self, model_name: str):
self.client = Groq(api_key=os.getenv("GROQ_API_KEY"))
self.model_name = model_name
def _response(self, message):
return self.client.chat.completions.create(
model=self.model_name,
messages=message,
temperature=0,
max_tokens=4096,
stream=True,
stop=None,
)
def response_stream(self, message):
for chunk in self._response(message):
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
class Message:
system_prompt: str = (
"""あなたは愉快なAIです。ユーザの入力に全て日本語で返答を生成してください"""
)
def __init__(self):
if "messages" not in st.session_state:
st.session_state.messages = [
{
"role": "system",
"content": self.system_prompt,
}
]
def add(self, role: str, content: str):
st.session_state.messages.append({"role": role, "content": content})
def display_chat_history(self):
for message in st.session_state.messages:
if message["role"] == "system":
continue
with st.chat_message(message["role"]):
st.markdown(message["content"])
def display_stream(self, generater):
with st.chat_message("assistant"):
return st.write_stream(generater)
class ModelSelector:
def __init__(self):
self.models = ["llama3-8b-8192", "llama3-70b-8192"]
def select(self):
with st.sidebar:
st.sidebar.title("groq chat")
return st.selectbox("", self.models)
def main():
user_input = st.chat_input("何か入力してください")
model = ModelSelector()
selected_model = model.select()
message = Message()
if user_input:
llm = GroqAPI(selected_model)
message.add("user", user_input)
message.display_chat_history()
response = message.display_stream(
generater=llm.response_stream(st.session_state.messages)
)
message.add("assistant", response)
if __name__ == "__main__":
main()
5. まとめ
以上、Llama3とGroqについてお伝えしました。 ポイントをまとめると以下のようになります。
Llama3は高性能な言語モデルで、特に英語タスクで高い精度が期待できる
今後数か月以内に多言語対応モデルや、GPT-4を上回る400Bモデルのリリースが予定されている
Llama3はオープンソースに近いが、完全なオープンソースではない
GroqはLlama3の実行環境を無料で提供しており、他社と比べて圧倒的なコストパフォーマンスを誇る
現在Groqの無料プランで、Llama3を使ったチャットボットを簡単に作成可能
言語モデルの世界は日進月歩で進化していますが、今後も最新情報をキャッチアップしつつ、分かりやすく解説していきたいと思います!
最後まで読んでくださりありがとうございました😆
最後にLINE 公式を始めたので興味があったら見てみてください!
https://liff.line.me/2004040861-3Jvq4bAG
ChatGPT, Claude3のプロンプトテクをまとめたプレゼントを無料で配布中です!(キーワード「プロンプト」と入力してください)
この記事が気に入ったらサポートをしてみませんか?