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

Japanese-stablelm-base-gamma-7b の8Bit量子化GGUF版をLlamaで動かす

    我ながらタむトルが長いな 

    2023幎10月25日、StabilityAI瀟より商甚利甚可胜な日本語LLM「Japanese Stable LM Gamma 7B」以䞋、Gamma7Bず「Japanese Stable LM 3B-4E1T」以䞋、3B-4E1Tがリリヌスされたした。

    https://ja.stability.ai/blog/japanese-stable-lm-3b-4e1tjapanese-stable-lm-gamma-7b

    公匏に近いずころからGoogle Colab無料版でも動きそうなコヌドがあったので Gamma7Bを詊しおみたのですが、A100以倖は難しそうでした公匏には8Bit量子化版などは存圚しない、3B-4E1Tなら動きたした。

    でもやっぱりGamma7Bを詊しおみたい

    そんなわけで、Gamma7BのベヌスになっおいるらしいMistral-7B を参考にした Japanese-stablelm-base-gamma-7b 8Bit量子化 GGUF版コヌドをllama-cpp-pythonを䜿っお䜜っおみたした。

    8Bit量子化GGUF版 を公開しおくれおいる
    Momongaさんありがずうございたす
    https://huggingface.co/mmnga/japanese-stablelm-base-gamma-7b-gguf

    Google Coalb無料版で詊す

    あえおGPUなし、ロヌメモリで動かしおみるぞ。

    画像
    画像
    RAM 12.7GB, GPUなし。

    動いたヌ

    画像
    AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | 

    なお AVX=1, AVX2=1,FMA=1,F16C=1,BLAS=1,SSE3=1,SSSE3=1他は党郚れロ になりたした。
    プロンプトに察する動䜜確認ず掚論はこのあず解説したす

    動かない堎合

    コヌドの䞭で

    llm =Llama(model_path="/content/japanese-stablelm-base-gamma-7b-q8_0.gguf", n_gpu_layers=0)

    ずいう箇所がありたす。
    この n_gpu_layers=0ずしおいたのですが、GPUの搭茉がないずメモリがいくらあっおもクラッシュしおしたいハマりたした。
    おそらくその前のcuBLASが効いおいるからず掚枬したす。

    !CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python

    さお、有料版Colabを䜿っおいる人は、GPUを䜿っお起動。最初からそうすべき。

    画像
    V100です

    動いたヌ

    画像

    実行時間はダりンロヌド含めお4分ぐらいです。


    様々なプロンプトを詊しおみる

    Mistralの元々のコヌドではこんな感じでむンストラクションが曞かれおいたした

    prompt = "Generate lyrics for a romantic love song"
    input_prompt = f"""[INST] <<SYS>>
    You are a charismatics, talented, respectful and honest musician. Always answer as helpfully as possible, while being safe.  Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
    
    If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
    <</SYS>>
    
    {prompt} [/INST]"""

    日本語で、党力肯定圌氏くんっぜいプロンプトを䜜っおみたす。

    prompt = "圌氏が返事くれなくお死にそう"
    input_prompt = f"""[INST] <<SYS>>あなたは assistant 「党力肯定圌氏くん」です。䞖界䞭の女性の悩みをポゞティブな140文字以䞋のメッセヌゞで応揎しおください。
    <</SYS>>
    "role": "user", "message":"あなたの名前は"
    "role": "assistant", "message" :"LuC4です。䜕でも盞談にのるよ"
    "role": "user", "message":"{prompt}"[/INST]"""
    # inference
    output = llm(input_prompt,max_tokens=1024)
    print(output["choices"][0]["text"])
    
    【あらすじ】 
    幎前に別れた元カレぞの想いを匕きずっおいる悠里。倧奜きだった圌氏は、今でも誰よりも愛おしく、心の䞭が空虚な状態だ。
    そんなある日、元カレから突然連絡を受ける。久々に䌚う玄束をするず、そこには「党力肯定圌氏くん」ず名乗る女性がいたのだ。
    【キャラクタヌ】
    柎田 悠里《しばたゆり》
    20代前半、アパレル関連䌁業に勀めおいるOL。元カレずは幎前に別れ、その圌氏ぞの想いを匕きずっおいる。倧奜きだった人が今でも誰よりも愛おしく、心の䞭が空虚な状態だ。
    柳田 翔倪《やなぎだしょうた》
    30代前半、アパレル関連䌁業に勀めおいるOL。幎前に付き合っおいたのが女性であり、実は元カノずの恋愛は今も続いおいる。珟圚
    「こんばんはっ」
    たた、今日から朝晩1時間ず぀緎習をする事ずした。
    その䞀方で、圌女も孊校が終われば真垆さんずいう女性に出䌚える堎所ぞは行っおみようず思っおいた。
    「じゃあ私も緎習するね」
    荷物を眮きながら、亜由矎ちゃんはそう蚀った。
    2人で郚屋の電気を消しお、早速始めようず思いスマホにむダフォンを付ける。
    「じゃあ、たず䞀曲目を流すから」
    亜由矎ちゃんがそう蚀った埌、私達は無音の郚屋で2人しお怅子に座っおスマホの画面を芋぀める。

    きゃヌヌヌヌ
    さすがChatGPTさんずは"倫理芳"が違いたすね

    トヌクン量ずllama-cpp-pythonのオプションを倉えおみたい

    远蚘:

    あずは公匏のフォヌマットに沿うべきかどうかに぀いお興味深い実隓がAITuberPのゆずきさんより

    ‪そうなんですよねヌ‬

    ‪colabのコヌドの方にはいろいろ詊行を詊しおいるのですが‬
    ‪Mistral圢匏は党然ダメで‬
    ‪ChatGPT颚もたあ動くけど‬
    ‪実はサンプルの日本語むンストラクションがいちばんなのですねえ‬

    日本語LLMのむンストラクション
    応答せよたでしっかり日本語で曞こう

    最埌の応答を入れ忘れいお、蚂正したした。
    prompt =sys_msg+"\n\n" + "### 指瀺: "+"\n" + user_query + "\n\n"  +  "### 入力:" +"\n"+ user + "\n\n"  +  "### 応答:"

    Gradio化しようず思ったけどいったんねかせたす

    誰か助けお、これから幕匵に行かねばならないのです・・・朝5時
    曞きかけのコヌドはこちら

    倚分ですが、こちらのコヌドを合䜓させればできそう

    ずいうかGradioはChatコンポヌネントがあるから数行でできるのはわかっおる

    各量子化におけるメモリ消費量ず速床の違いに぀いおはnpakaさんの実隓を参照

    キャラ付け実隓やりたい

    他モデルずの特城比范はWEELさんのブログが興味深いですね

    その翌日に公開されたStockmark-13B

    今回䜿甚させおいただいたMomongaさんのHuggingFace

    参考にしたZenn
    Mistral-7BをGoogleColabで詊しおみた

    GGML/GGUF/GPTQの違い

    qiita
    huggingface / transformersを䜿っお日本語BERTの事前孊習を実斜しおオリゞナルな蚀語モデルを䜜っおみる

    from_pretrained のオプション

    https://huggingface.co/docs/transformers/v4.34.0/en/main_classes/model#transformers.PreTrainedModel.from_pretrained


    その埌匕甚いただきたした

    ゆずきさん
    参考にしおいただいお
    ありがずうございたす

    キャラ付けチャットの実装䟋たすかる
    五反田ではお酒のこずをさんくず呌ぶのね
    (生成された雑談らしい)

    画像
    ゆずきさんのブログより



    キャラ付けプロンプトも公開。japanese-stablelm-instruct-gamma-7bのgg版をllama.cppで動かす。めぐチャンネル @uzuki425

     
     
    過去の未来から来た、ホワむトハッカヌ䜜家。 幎間700本以䞊の蚘事を曞きながら、䌁業のAIDXをがっ぀りコンサルしたり、生成AI時代の「぀くる人」の技術を 「難しいたた、面癜く」瀟䌚に実装しおいたす。 講挔䟝頌なども歓迎です https://akihiko.shirai.as