[ChatStream] rinna/nekomata-14b-instruction 用の ChatPromptクラス

[ChatStream] rinna/nekomata-14b-instruction 用の ChatPromptクラス

2023/12/21 に発表された rinna/nekomata-14b-instruction 用の ChatPrompt をご紹介します

nekomataシリーズは Qwen をベースモデルしているおり、語彙サイズが 15.2万とこれまでより大幅に大きいため、日本語対応にもおおいに期待できそうですね

今回はInstructionチューニングされたモデルをChatStreamのチャットモードで利用するためのChatPromptを作りました。

設計思想としましては、あるタスクとChatPrompt を対応させる、という考え方です。簡単にいうと、1つのChatPromptは1つの仕事に特化させる、というところでしょうか。

たとえば、今回は、「翻訳」というタスクに特化した ChatPrompt の例です。

これにより 翻訳 というタスクに対して、 「入力」と「出力」というをチャットインタフェースを通して行います。

from chatstream import AbstractChatPrompt
from chatstream.chat_prompt.prompt_ttl import PromptTTL


class ChatPromptRinnaNekomata(AbstractChatPrompt):

    def __init__(self):
        super().__init__()

        system_message = "以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。"
        instruction_message = "次の日本語を英語に翻訳してください。"
        self.set_system(f"{system_message}\n\n### 指示:\n{instruction_message}")
        self.set_requester("入力")
        self.set_responder("応答")
        self.set_prompt_ttl(PromptTTL.SINGLE_TURN)

    def get_stop_strs(self):
        if not self.chat_mode:
            return None
        return ["<|endoftext|>"]

    def get_replacement_when_input(self):
        return None

    def get_replacement_when_output(self):
        return None

    def create_prompt(self, opts={}):
        if not self.chat_mode:
            return self.get_requester_last_msg()

        ret = self.system + "\n\n"
        for chat_content in self.get_contents(opts):

            chat_content_role = chat_content.get_role()
            chat_content_message = chat_content.get_message()

            if chat_content_role:

                if chat_content_message:
                    merged_message = f"### {chat_content_role}:\n" + chat_content_message + "\n\n"
                else:
                    merged_message = f"### {chat_content_role}:\n"

                ret += merged_message

        return ret

Read more

【ChatStream】大容量のLLMの推論に必要なGPUサーバー構成

【ChatStream】大容量のLLMの推論に必要なGPUサーバー構成

大容量のLLM(大規模言語モデル)の推論に必要なGPUサーバー構成とChatStreamとの連携について詳しく動画で解説しています。 特に、Llama3-70Bモデルを例に、そのメモリ要件(140GBのGPUメモリ)と、この要件を満たすために必要なGPUサーバーおよびGPUクラスターの構成について、取り扱いやすい NVIDIA RTX A6000 GPUを使用した例について説明します。 また、モデル並列化技術(テンソル並列化、パイプライン並列化、データ並列化)とその推論エンジンの選択についても触れ、実際に複数のGPUサーバーを使ったクラスター構成がどのように推論処理を効率的に行うかを示します。 最後に、ChatStreamのLLMノードとは何か、そしてそれをどのようにスケーリングして大量の同時リクエストに対応するかについても解説します。こ の動画は、高性能を必要とするLLMのデプロイメントと運用に興味がある方に特に有益です。

By Join us, Michele on Qualiteg's adventure to innovation
ChatStream🄬でLlama-3-Elyza-JP-8B を動かす

ChatStream🄬でLlama-3-Elyza-JP-8B を動かす

こんにちは、本日は Llama-3-Elyza-JP-8B を使ってみました。 昨日 2024年6月26日に発表(https://prtimes.jp/main/html/rd/p/000000046.000047565.html)された Llama-3-Elyza-JP-8B は 70B 版では「GPT-4」を上回る性能の日本語LLMといわれています。 今回、当社でも Playground 環境に Llama-3-Elyza-JP-8B を搭載して試してみましたのでご紹介します。 70B(700億パラメータ)版は GPT-4 を上回るとのことですので、8B(80億パラメータ)版はGPT-3.5 と比較してみることにいたしました。 (性能比較は https://note.com/elyza/n/n360b6084fdbd の記事に詳しく書いてあります。) AWQ量子化版を使用してみる 今回は、A4000

By Qualiteg プロダクト開発部
AttributeError: module 'torch._dynamo' has no attribute 'mark_static_address' が発生したときの対処法

AttributeError: module 'torch._dynamo' has no attribute 'mark_static_address' が発生したときの対処法

以下のようなエラーが出た場合の対処法 File "/venv/Lib/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/venv/Lib/site-packages/transformers/generation/utils.py", line 1744, in generate model_kwargs["past_key_values"] = self._get_cache( ^^^^^^^^^^^^^^^^ File "/venv/Lib/site-packages/transformers/

By Qualiteg プロダクト開発部
[AI新規事業創出]Qualitegセレクション:アイディア創造編①Qualiteg式オンラインブレストの活用術

[AI新規事業創出]Qualitegセレクション:アイディア創造編①Qualiteg式オンラインブレストの活用術

Qualiteg blogを訪問してくださった皆様、こんにちは。Micheleです。AIを活用した新規事業やマーケティングを手がけている私には、クライアントからよく寄せられる質問があります。AIを用いた事業展開を検討されている方々が共通して直面するであろう課題に対して、このブログを通じて私なりの解答をご提供したいと思います。 今日は私のお気に入りのブレスト方法である「Qualiteg式オンラインブレスト」の活用術についてお話ししたいと思います。 場所を変えて気分を変えても良いアイディアは生まれない!? よく、「金曜日は1日ブレストしよう!」という上司の掛け声とともに、いつもと違う雰囲気なら良いアイディアも出るかもしれないといってホテルの会議室などを予約されて1日缶詰でブレストしたが、期待する結果が出なかったとおっしゃるクライアントが非常に多いです。 ブレインストーミングは複数の参加者が自由にアイデアを出し合うことで、新しい発想や解決策を見つける手法です。 批判や評価を一時的に排除し、量を重視して多くのアイデアを集めることが目的です。1950年代に広告業界で生まれたこの手法は

By Join us, Michele on Qualiteg's adventure to innovation