ファインチューニングの終焉:全ては継続的な事前学習

少し古いですが「ファインチューニングの終焉(The End of Fine-tuning)」という記事が面白かったので、簡単なメモです。 www.latent.space この記事に登場するFast.aiのJeremy Howardさんは「事前学習→追加学習→RLHF」のように、フェーズごとにデータセッ…

【LLM論文を読む&試す】LLMの刈り込み(Pruning):深いレイヤーの不合理な非効率性

先日「Llama-3-70Bを刈り込み(Pruning)で42Bに縮めたモデルが登場」というRedditの投稿が話題になっていました。 投稿者はおなじみのkindacognizant(kalomaze)さんですが、モデル作成者は別の方のようです。モデルのHuggFaceのRepoはこちら。 huggingfac…

llama.cpp:iMatrix量子化は日本語性能にどう影響するか?

量子化時のモデル劣化を抑制する重要度行列(iMatrix; Importance Matrix)計算の話題です。 最近はHuggingFaceにアップされるGGUFも多くがiMatrix版となっていますが、これらの量子化でよく使われているiMatrix計算用データセットは以下の2種類のようです。…

Mergoo: LLMの効率的なマージと微調整のためのライブラリ (MoE, Mixture of Adapters)

「Merggoo」というLLMマージ用の新しいライブラリができたそうで、開発者の方がRedditでもPRポストを上げておられます。 もしかするとMegekitに代わるものになるのかもしれません。MoEのルーティングの学習や、LoRA Adapterの混合など。 面白そうなので後で…

Chat Vector の効果 vs. MoEマージ の効果

前回の続きです。次はChat Vector処理によってどれくらい日本語チャット機能が改善しているのかを具体的にみてみます。 下記の記事で、Chat Vectorを使わなくても単純に2モデルをMoEマージするだけで一定の性能向上が観察できることは確認しています。 sc-ba…

LightChatAssistant 2x7B を再現する

前回Chat Vectorについて簡単に予習したので、とりあえず「LightChatAssistant 2x7B」の作成手順を再現してみたいと思います。 作者さんがモデルカードで丁寧に説明してくださっているので、基本的にそれをなぞるだけです。まずはまったく同じモデルを作って…

【LLM論文を読む】Chat Vector:LLMに新たな言語での指示追従とアラインメントを付与するシンプルなアプローチ

前回の記事につづき、「LightChatAssistant 2x7B」に高いチャット性能をもたらした要素について調べています。 基本的には、1)ベースモデルとしての「ChatNTQ JA 7B」の日本語性能の高さ、2) MoEマージで総パラメータ数が増えることによる全般的な性能向上…

MergeKitによるMoEマージだけで日本語性能は上がるか?

前回の記事で、「LightChatAssistant 2x7B」が日本語チャットモデルのベンチマークでもかなり高いスコアを示すことを確認しました(スコア上はCohereの「Command-R 35B」に近い水準です)。 体感的にもベンチマーク的にも優れた日本語チャットモデルで、サイ…

ChatNTQ 7B と LightChatAssistant 2x7B の日本語性能を測定する

前回の記事で試した日本語チャットモデル「ChatNTQ-JA-7B-v0.1」と、そのMoEモデル「LightChatAssistant 2x7B(改称あり)」について、かなり性能が良さそうな感触が得られたので、追加でテストしてみました。 LLMの日本語チャット性能を測るベンチマークと…

Mistral 7Bベースの日本語チャットモデル ChatNTQ-JA-7B を試す

「chatntq_chatvector-MoE-Antler_chatvector-2x7Bchatntq_chatvector-MoE-Antler_chatvector-2x7B」という呪文のような日本語MoEモデルが話題になっていました。 https://t.co/tmcIFgrObQ2x7Bの日本語チャット・ノベル専用高性能モデル。Antler-7Bとchatntq…

llama.cpp: CPU+GPUのプロンプト処理が高速化される(#6083)

今さら知ったのですが、2週間ほど前にllama.cppでモデルをGPUに部分オフロードした場合のプロンプト処理速度が大幅に向上されていました。 github.com 従来のllama.cppではGPUフルオフロードから部分オフロードに移行すると急激にプロンプト処理(PP)が遅く…

llama.cpp量子化:重要度行列(Importance Matrix)計算に使うテキストについて

以前にも取り上げている件ですが、現在のllama.cppでは重要度行列(Importance Matrix)計算を利用することで量子化精度が改善できます。 特に4bit以下の低bit量子化を行う場合は、このiMatrix版の量子化が推奨されます(Metal環境などでは推論速度が遅くなる…

DPO(直接選好最適化)とは何か、メモ

最近、自作の指示応答データセットを使った微調整によってLLMにパーソナライズされた知識を追加することを試みているのですが、その際にモデルに植え付けられた過剰なアラインメントが知識追加の障壁になる場合があります。 例えばモデルに対し「USER: 好き…

Starling-7B: RLAIF で LLM の有用性と無害性を向上させる

お馴染みのLMSYS Chatbot Arena ELOランキングが更新されていました。 [Arena Update]70K+ new Arena votes️ are in!Claude-3 Haiku has impressed all, even reaching GPT-4 level by our user preference! Its speed, capabilities & context length are u…

消費者向けAIチャットサービスの収益化問題

ChatGPTのような消費者向けAIチャットサービスの収益化問題に関する記事がRedditで共有されていました。 www.businessinsider.com 記事によると 最近「Inflection AI」というAIスタートアップから主要メンバーがMicrosoftに引き抜かれ、会社が瓦解しかかって…

微調整データセットには事前学習データも混ぜたほうがいい?

「ファインチューン用のデータには事前学習用データもミックスすべき」というポストがredditに上がっていました。投稿者はkobold.cppなどの開発にも関わっているkindacognizant (kalomaze)さんです。 投稿の要旨 言語モデルのファインチューンは基本的に「加…

Mistral AI のCEO、Arthur Mensch の対談メモ

www.youtube.com Mistral AI と Figma のCEOの対談に関する投稿がRedditに上がっていた(文字起こしのリンクが貼られている)。目を通して気になった点を適当にメモしておく。 Llama-7Bのような小型のモデルはコミュニティの需要が大きい一方で、改善の余地…

LoRAのランク(r)は高いほうがいいのか?

LoRAファインチューンでは様々なハイパーパラメータがあります。モデルとデータセットに合ったパラメータを選ぶことで、学習速度・精度が変わります。 今日は主要なハイパーパラメータの一つであるLoRAランク (r)が気になったので、簡単な備忘録を書いてお…

【LLM論文を読む】DoRA:Weight-Decomposed Low-Rank Adaptation(重み分解LoRA)

ここ数日「Stable Knowledge Editing」を参考にしながら、LoRAファインチューンによるLLMへの知識の追加を試しています。 LoRAのハイパーパラメータ調整のコツを調べるなかで、「DoRA(重み分解LoRA)」という別のLoRA派生手法の存在を知りました。HuggingFa…

【LLM論文を読む】大規模言語モデルの安定的知識編集(Stable Knowledge Editing)

2024年2月に投稿された中国科学院大学の研究者によるarXiv論文です。 ファインチューン・ベースの知識編集手法である「Stable Knowledge Editing」を提案したうえで、既存の知識編集手法と比べた場合の有用性を主張しています。 arxiv.org 概要 大規模言語モ…

llama.cppのGGUFフォーマットに関する資料メモ

1. GGUF(公式doc) github.com 2. プラットフォーム別GGUF対応表 github.com 3. どのGGUFを選べばいいですか?(再掲) GGUF quantizations overview · GitHub

llama.cpp で多言語LLMの Cohere Command-R 35B を試す

github.com カナダのAIスタートアップCohereが先日公開した多言語LLMのCommand-Rが、最新のllama.cppでサポートされました。 開発したCohereはLLMスタートアップとしてはわりと有名どころですが、OpenAI/Anthropic/Mistralの先頭集団には後れを取っている感…

【LLM論文を読む】大規模言語モデルの知識編集(Knowledge Editing)に関するサーベイ

LLMの知識編集(Knowledge Editing)のあらましをざっくり把握するため、適当なサーベイ論文に目を通してみたいと思います。 arXivに上がっている2023年10月のバージニア大学の研究者による論文『大規模言語モデルの知識編集に関するサーベイ(Knowledge Edi…

Claude 3は確かにGPT-4を上回るという評価が出始める

先日、Anthropic が発表したクローズドの大規模言語モデル Claude 3 (Opus) が、本当にGPT-4 超えの性能かも、と話題になっています。 Chatbot Arena Leaderboard の直近集計では、冒頭の表のとおり GPT-4 Turbo の後塵を拝しているものの、柔軟で積極的な対…

【LLM論文を読む】LAB: チャットボットのための大規模アライメント(IBM Merlinite 7b)

IBMが「ibm/merlinite-7b」というMistral 7Bベースのファインチューンモデルを公開し、同時にそのファインチューン手法に関するarXiv論文を投稿しています(「LAB: チャットボットのための大規模アライメント」)。 arxiv.org 概要 本研究では、大規模言語モ…

llama.cpp:複雑化する量子化バリエーションの整理(2024.02現在)

https://github.com/ggerganov/llama.cpp/pull/5747 llama.cpp では最近、ikawrakow氏による量子化手法のアップデートが熱心に行われています。 新しい量子化の実装が重なり個人的に分かりづらくなってきたので、簡単に整理しておこうと思います。 quantize.…

【LLM論文を読む】ファインチューニングか検索か?LLMにおける知識追加手法の比較

「ファインチューニングか検索(Retrieval)か?LLMにおける知識追加手法の比較」というarXiv論文が上がっていました。執筆者はMicrosoft Israelの研究グループです。 arxiv.org 先日、Microsoft の別のグループが「RAG vs ファインチューニング:パイプライン…

llama.cpp:Importance Matrix による新しい量子化手法を試す

年明けにllama.cppに実装された「Importance Matrix(重要度行列?)」を使用したgguf量子化について調べてみました。 Importance Matrixは、llama.cppのikawrakow氏が取り組んでいる一連の量子化精度改善の中心的なアイディアのようで、特に2-3bitの極端な…

llama.cpp:再量子化(requantize)による劣化を調べる

llama.cpp の量子化では、safetensorsなどの元モデルを一度FP16フォーマットのggufに変換した後で(convert.py)、このFP16モデルをもとに./quantizeによって8bitや4bitなどのggufに圧縮します。 ただquantize.cppに目を通すと [--allow-requantize](再量子…

【LLM論文を読む】テキスト分類のためのデータ拡張(Data Augmentation)

LLMに知識を追加するためのファインチューン手法を調べていたところ、限られたデータセットを量的に拡張する「データ拡張/Data Augmentation」という研究領域があることを知りました。 簡単に見てみると、データ拡張はテキストAIよりも画像AI・音声AIなどの…