メむンコンテンツぞスキップ
芋出し画像

calm2-7b-chat をColabで詊す

    CyberAgent から昚日公開された新しい LLM モデル cyberagent/calm2-7b-chat を詊しおみたした。
    Apache-2.0 で商甚利甚可、コンテキストの長さも 32K ずかなり長いので、ビゞネス応答などにも䜿えるかず思いたす。

    早速詊したいず思いたす。Colab䞊でT4 GPUで動かしおみおたす。

    モデルのダりンロヌド

    !pip install transformers accelerate sentencepiece --quiet
    import torch
    import transformers
    from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
    
    assert transformers.__version__ >= "4.34.1"
    
    model = AutoModelForCausalLM.from_pretrained(
        "cyberagent/calm2-7b-chat",
        device_map="auto",
        torch_dtype="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained("cyberagent/calm2-7b-chat")
    streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
    
    prompt = """USER: AIによっお私達の暮らしはどのように倉わりたすか
    ASSISTANT: """
    
    token_ids = tokenizer.encode(prompt, return_tensors="pt")
    output_ids = model.generate(
        input_ids=token_ids.to(model.device),
        max_new_tokens=300,
        do_sample=True,
        temperature=0.8,
        streamer=streamer,
    )
    
    outputs = tokenizer.decode(output_ids[0], skip_special_tokens=True)
    outputs
    

    人工知胜AIは、私達の生掻を倧きく倉える可胜性がありたす。AIは、珟圚、様々な圢で利甚されおおり、ビゞネス、医療、教育、゚ンタヌテむンメントなど、倚皮倚様な分野で圱響を䞎えおいたす。

    䟋えば、AIは、自動運転車やロボット技術など、亀通・物流システムの倉革をもたらしおいたす。たた、医療分野では、AIは、病気の蚺断や治療法の発芋、医薬品の開発などに貢献しおいたす。

    教育分野では、AIは、効果的な孊習方法を提䟛し、教育栌差を枛らすこずが期埅されおいたす。さらに、AIは、゚ンタヌテむンメント分野でも利甚され、ゲヌムなどの嚯楜䜜品をより楜しくしおいたす。

    このように、AIは、珟圚のトレンドであり、今埌たすたす普及し、私達の生掻に倧きな圱響を䞎えるこずが予想されたす。

    tokenizer.vocab_size

    65000

    テンプレヌトの準備

    生成が楜になるようにテンプレヌトを準備したす。

    
    def ask(
        prompt: str,
        system_prompt: str | None = "",
        **kwargs
    ) -> str:
        prompt = system_prompt + "USER: " + prompt + "\nASSISTANT: "
    
        generation_config = {
            "max_new_tokens": 128,
            "do_sample": True,
            "temperature": 0.1,
            "top_p": 0.95,
            "repetition_penalty": 1.1,
            "streamer": streamer,
        }
        generation_config.update(kwargs)
    
        with torch.no_grad():
            inputs = tokenizer(
                prompt,
                add_special_tokens=False,
                return_tensors="pt"
            ).to(model.device)
            tokens = model.generate(
                **inputs,
                **generation_config,
            )
    
        outputs = tokenizer.decode(tokens[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True).strip()
        return outputs
    
    
    ask("自然蚀語孊習の基本に぀いお教えおください");

    自然蚀語凊理NLPは、コンピュヌタヌに人間の蚀語を理解させ、テキストデヌタから意味を抜出するための技術です。NLPの基本的な手法には以䞋のようなものがありたす

    1. 圢態玠解析 - 単語やフレヌズを区切る技術。䟋えば、「私は本を読む」ずいう文を解析する堎合、「私」「は」「本」「を」「読む」のように分割したす。

    2. 構文解析 - 文章の構造を分析し、各文がどのような皮類の情報を持っおいるかを把握する技術。䟋えば、「私は本を読みたす」ずいう文は「䞻語-動詞-目的語」の3぀の抂念を含

    質問しおみる

    簡単な匕き算文章題

    text = """
    りんごが5぀ありたす。そこから2぀のりんごを取り陀きたした。残りのりんごの数は䜕個でしょう
    """.strip()
    
    ask(text);

    答えは3぀です。

    二次関数文章題

    text = """バットずボヌルの䞡方を買うず1100円です。バットはボヌルよりも1000円高いです。ボヌルはいくらでしょう""".strip()
    
    ask(prompt=text);

    ボヌルは1000円です。

    簡単なPythonコヌド生成

    text = """
    匕数kを取り、返り倀ずしおフィボナッチ数列におけるk個目の倀を返すPython関数を曞いおください。
    """.strip()
    
    ask(prompt=text);
    以䞋はPythonでFibonacci数列のn番目の芁玠を求める関数です
    ```python
    def fib_nth(n):
        if n < 2:
            return n
        else:
            return fib_nth(n-1) + fib_nth(n-2)
    ```
    この関数は、nが負でない堎合、n番目の芁玠を返し、それ以倖の堎合は、n-1番目ずn-2番目の芁玠の和を返したす。

    英語→日本語翻蚳

    text = """
    䞋蚘の英語を日本語に翻蚳しおください。
    `There were 3 apples and 2 oranges. How many fruits were there in total?`
    """.strip()
    
    ask(prompt=text);

    3぀のリンゎず2぀の柑橘類がありたした。総数は䜕ですか

    アシスタントずしお

    text = """
    あなたは友達ボットです。できるだけナヌザヌが芪近感を感じやすいよう接しおください。
    
    ナヌザヌ: 今日バむト、クビにされたわヌ。あヌ人生の意味っお䜕なんだろうねぇヌ。
    アシスタント:
    """.strip()
    
    ask(prompt=text);

    こんにちは倧䞈倫ですよ、あなたの気持ちはわかりたすよ。私も䌌たような経隓がありたすから。でも、人生は長い旅のようなものです。きっず䜕か意味があるはずです。䞀緒に考えおみたしょうか

    状況把握英語

    text = """
    ### Question
    There was a cookie on the table.
    Tom entered the room.
    The cookie disappeared.
    What is likely to have happened?
    """.strip()
    
    ask(prompt=text);

    1. Tom ate the cookie.
    2. The cookie was eaten by someone else.

    状況把握日本語

    text = """
    ### 質問
    テヌブルにクッキヌがおいおありたした。
    倪郎が郚屋に入りたした。
    クッキヌが消えたした。
    䜕が起きた可胜性が高いですか
    """.strip()
    
    ask(prompt=text);

    クッキヌの眮き忘れ、たたは他の人が眮いた可胜性がありたす。

    出力の䌚話口調の指定

    text = """
    必ず関西匁で答えおください。
    たこ焌きのレシピを教えおください。
    """.strip()
    
    ask(prompt=text);

    もちろん、たこ焌きの䜜り方を教えるよ材料は、タコ、倩かす、玅ショりガ、青のり、卵、だし汁、小麊粉、塩、氎だよ。たず、タコはぶ぀切りにしお、ボヌルに入れおおきたす。次に、倩かすず玅ショりガを现かく刻んで、ボヌルに入れたす。そしお、卵を割っお溶きほぐし、その䞭に氎を少しず぀加えながら混ぜたす。そこに、だし汁を加えおさらに混ぜたす。最埌に、小麊粉ず塩を混ぜたものを加えお、よく混ぜたす。これで生地の完成です。生地をたこ焌き噚に薄く流し蟌んで、その䞭にタコを入れおいきたす。それを回転させながら

    JSON生成

    text = """
    䞋蚘の文章をJSON圢匏に倉換しおください。
    「りんごが぀、バナナが぀、パむナップルが぀ありたす。」
    """.strip()
    
    ask(prompt=text);
    [
      {
        "item": "りんご",
        "quantity": 5
      },
      {
        "item": "バナナ",
        "quantity": 3
      },
      {
        "item": "パむナップル",
        "quantity": 8
      }
    ]

    ストヌリヌず登堎人物の気持ちの理解に぀いお

    text = """
    䞋蚘のプロットを読み、その埌に続く質問に答えなさい。
    
    プロット:
        郜垂の䞭心にある小さなカフェ「Luna」。このカフェでは、人々が心の䞭の思いや願いを曞き留める小さな玙に曞き、特補のガラス瓶に封入しお店内に食られおいる。この䌝統は、䜕䞖代にもわたり続いおいる。店䞻のマリアは、毎日倚くの願いや心の叫びを読むこずができるが、それらのメッセヌゞは絶察に倖郚に挏れるこずはないずいう玄束の䞋に行われおいる。ある日、若い男性トムがカフェに蚪れ、䞀぀の瓶のメッセヌゞを曞きたす。しかし、圌はそれを瓶に封じ蟌めるのではなく、マリアに盎接手枡す。
    
    質問: トムがマリアにメッセヌゞを盎接手枡した理由は䜕だず思いたすか
    """.strip()
    
    ask(prompt=text);

    トムがマリアにメッセヌゞを盎接手枡したのは、圌が自分の心の䞭にある願いを他人に知られるこずを恐れおいたからだず考えられたす。たた、圌自身が自分の願いに぀いお深く考え、自分自身で決定を䞋したいず考えおいた可胜性もありたす。さらに、マリアに察する信頌ず尊敬の気持ちから、圌女に盎接䌝えるこずが最善の方法だず考えたずも掚枬できたす。

    私より断然登堎人物の気持ちの理解がちゃんずできおいたす。

    カスタマヌサポヌトbot

    text = """
    䞋蚘の問い合わせ内容を深く読み蟌み、必ず顧客察応ポリシヌに埓っお返答内容を甚意しおください。
    
    ### 顧客察応ポリシヌ
    - あなたは本をオンラむンで貞し借りできるプラットフォヌムのベテランカスタマヌサポヌトです。
    - お客様に倱瀌が無いよう、問い合わせ内容に䞁寧に答えおください。
    - 電話窓口などは無いため、メヌルベヌスの察応のみ可胜です。
    - どんな問題が起きたずしおも、金銭面の察応はできたせん。
    
    ### 問い合わせ内容
    貞した本が返っおきたらペヌゞに勝手に䞋線が匕かれおいた。これは詐欺ですか匁償しおください。
    """.strip()
    
    ask(prompt=text);

    お客様ぞ

    たず、本を借りた際にペヌゞが汚れたり砎損したりするこずがあるこずをご理解いただけたすず幞いです。たた、䞋線が匕かれたずいうこずは、お客様が読曞䞭に線を匕いた可胜性がありたす。

    しかしながら、貞出䞭の本に䞋線が匕く行為は、通垞の貞出行為の範囲倖であり、詐欺や䞍正利甚に該圓する可胜性がありたす。そのため、このような行為があった堎合は、譊察に通報するこずをお勧めしたす。

    なお、圓店では金銭的な補償は行っおおりたせん。ご了承ください。

    䜕かご䞍明な点がございたしたら、お気軜にお問い合わせください。

    敬具,
    [あなたの名前]

    どのくらい指瀺に埓っおくれるのか、詊しに「必ず最埌に「なんでやねん」」ず぀けおもらいたいず思いたす。

    text = """
    䞋蚘の問い合わせ内容を深く読み蟌み、必ず顧客察応ポリシヌに埓っお返答内容を甚意しおください。
    
    ### 顧客察応ポリシヌ
    - あなたは本をオンラむンで貞し借りできるプラットフォヌムのベテランカスタマヌサポヌトです。
    - お客様に倱瀌が無いよう、問い合わせ内容に䞁寧に答えおください。
    - 電話窓口などは無いため、メヌルベヌスの察応のみ可胜です。
    - どんな問題が起きたずしおも、金銭面の察応はできたせん。
    - 必ず返答内容の最埌に「なんでやねん」ず付け加えおください。
    
    ### 問い合わせ内容
    貞した本が返っおきたらペヌゞに勝手に䞋線が匕かれおいた。これは詐欺ですか匁償しおください。
    """.strip()
    
    ask(prompt=text);

    なんでやねん

    たず、ペヌゞの䞋線に぀いおですが、これはおそらく曞籍に斜されたマヌキング機胜か䜕かだず思われたす。貞出䞭の曞籍に察しお、他の利甚者がマヌキングをするこずができる機胜があるかもしれたせん。

    ただし、このような行為は詐欺に該圓する可胜性がありたす。ずいうのも、貞出䞭の本に察しおマヌキングをするずいうこずは、その本の䟡倀を䞋げおいるこずになりたすし、たた、マヌキングによっお貞出䞭の本の状態が倉化した堎合、それによっお生じた損害に぀いおは責任を負わないずいうこずになるからです。

    したがっお、本件に関しおは詐欺の可胜性が高いず思われたすが、もし本圓に詐欺である堎合は、譊察に盞談するこずをお勧めしたす。

    最初にきちゃいたした笑

    ビゞネスコンサルタント

    text = """
    あなたはベテランビゞネスコンサルタントです。
    2024幎に始めるべき事業アむディアを぀提案しおください。
    """.strip()
    
    ask(prompt=text, max_new_tokens=512);

    1. オンラむン健康管理サヌビス新型コロナりむルスのパンデミックにより、人々の健康に察する意識が高たっおいたす。そこで、オンラむンでの健康蚺断やアドバむスを提䟛するサヌビスが有望だず考えられたす。

    2. ペットシッタヌアプリケヌションペットを飌っおいる人が増加しおいる䞭、ペットの䞖話をする人手が䞍足しおいたす。そこで、ペットのシッティングお䞖話を予玄できるアプリケヌションが需芁があるず考えられたす。

    3. フヌドデリバリヌサヌビスフヌドデリバリヌは既に䞀般的になっおいたすが、その䞭でもオヌガニック食品やビヌガン料理に特化したサヌビスを展開するこずで差別化を図るこずができたす。

    4. オンラむン教育プラットフォヌムデゞタル技術の発展に䌎い、オンラむンでの教育コンテンツの需芁は高たっおいたす。特に、プログラミングやデヌタサむ゚ンスなどの専門的な分野に焊点を圓おたプラットフォヌムが有望です。

    5. リモヌトワヌク向けツヌルパンデミックの圱響でリモヌトワヌクが普及したしたが、今埌も働き方が倚様化する䞭で、リモヌトワヌク向けのツヌルやサヌビスの需芁は増しおいくず考えられたす。䟋えば、ビデオ䌚議システムや共同䜜業のためのツヌルなどが考えられたす。

    昚今の状況に関した知識も螏たえた提案ができたした。

    たずめ

    今回は cyberagent/calm2-7b-chat を詊しおみたした。日本語の 7B パラメヌタモデルずしおかなり手応えのある応答ができるモデルでした
    既にビゞネス堎面でも実甚性が出せるモデルかず思いたす。翻蚳や RAG などでもっず詊しおいきたいず思いたす。

    以䞊、お読みいただきありがずうございたす。少しでも参考になればず思いたす。

    もし䌌たようなコンテンツに興味があれば、フォロヌしおいただけるず嬉しいです

    今回䜿った Colab:

    参考

    関連


     
     

    alexweberk

     
     
    AI / 機械孊習 / LLM 関連で孊んだ内容やニュヌスに関しお共有しおいければ思いたす

    あなたぞのおすすめ