はち

外資系IT企業勤務。最近はLLMにハマってます。

はち

外資系IT企業勤務。最近はLLMにハマってます。

最近の記事

  • 固定された記事

進化的アルゴリズムをもちいたChatVector加算の最適化

はじめにこれまで何度かChatVectorやそれに類することを施行してきましたが、元のモデル+ChatVectorの加算はいつも1:1で実施してきました。それでもある程度上手くいっていましたが、この加算比率をSakanaAIのEvoLLMのように最適化するということができるらしいです。 ただ、調べた限りコードが落ちていなかったので自分なりに調べて試してみたというのが本記事の内容になります。 1. ライブラリの準備とりあえずGoogle Colabで試しました。 進化的アルゴ

    • Chat VectorとMath Vectorは併用できるのか

      はじめにこの記事は以下記事の続きになります。 Chat Vectorと呼ばれる、重みの足し引きでFine TuningなしにChat能力を事前学習モデルに付与できるという技術あります。 この発想から、Chat能力以外にも能力の切り貼りはできるのかという検証が前記事までの趣旨となります。 結果以下の通りです。 ⭕️ Chat(論文) ×  Code ⭕️  Math Reasoning なので本記事では、 Chat+Math能力の両方を日本語ベースモデルに付与したら、ど

      • Chat VectorならぬMath Vectorは作れるのか

        はじめにこの記事は以下記事の続きになります。 Chat Vectorと呼ばれる、重みの足し引きでFine TuningなしにChat能力を事前学習モデルに付与できるという技術あります。 この発想から、Chat能力以外にも能力の切り貼りはできるのかという検証が本記事の趣旨となります。 今回は以下の能力について試したいと思います。 数学的推論能力 結論だけ書くとある程度うまくいきました。検証記録とコード、モデルリンクをまとめていきます。 1. Skill Build今回は

        • Chat VectorにならぬCode Vectorは作れるのか

          はじめにChat Vectorと呼ばれる、重みの足し引きでFine TuningなしにChat能力を事前学習モデルに付与できるという技術あります。 つまりこういうことですね。  ChatVector = Llama2-chat - Llama2 でChat能力を抽出し、  New-Model-chat = New-Model + ChatVector でNew-ModelにChat能力を付与できます。(この時、New-ModelはLlama2の追加事前学習モデルである必要が

        • 固定された記事

        進化的アルゴリズムをもちいたChatVector加算の最適化

          BitNet&BitNet b158の実装④

          はじめに前回、BitLinear b158の実装を行いました。前回までの内容は以下をご参照ください。 4. BitNet b158の検証BitNetの検証と同様、 BitLlamaでBitLinear158bを利用できる様に修正 事前学習ができるか(Lossが下がるか)確認 を行います。 4-1. BitLlamaの修正 modeling_bit_llama.pyにおいて、BitLinearを使用している箇所をBitLinear158bに切り替えられる様にするだけ

          BitNet&BitNet b158の実装④

          BitNetにおけるSTE(Straight-Through Estimator)の実装

          はじめに現在、私は以下のような試みをしています。 BitNetとは BitNetとはweightとactivationを量子化する手法の1つで、特にweightを{-1, 0, 1}の3値に量子化するBitNet b158はベースとしているLlama2の性能を上回ることを示し、注目を浴びました。 その実装の中で、量子化(つまりFloat16や32ではなくより離散的な値を扱う様にする処理)を行うとBackward時に微分ができないため学習がうまくできないという問題が発生し

          BitNetにおけるSTE(Straight-Through Estimator)の実装

          BitNet&BitNet b158の実装③

          はじめにBitNetおよびBitNet b158の実装を続けていこうと思います。 ボリュームが大きくなってきたため、記事を分けることとしました。前回までの内容は以下をご参照ください。 2日連続での投稿となるので前後関係をお気をつけください。 3. BitNet b158これまでに作成したBitLinearを修正していく形でBitNet b158用のBitLinear b158を作成していきます。 BitLinearとBitLinear b158の変更点は以下の2つです。

          BitNet&BitNet b158の実装③

          BitNet&BitNet b158の実装:参照まとめ

          各ページに都度参照を書いていくと冗長なためここに参考にした資料を置いていきます。 参照

          BitNet&BitNet b158の実装:参照まとめ

          BitNet&BitNet b158の実装②

          はじめに少し間が空いてしまいましたが、BitNetおよびBitNet b158の実装を続けていこうと思います。 ボリュームが大きくなってきたため、ページを分けることとしました。前回までの内容は以下をご参照ください。 2. BitNetの検証今回は、前回作ったBitNetの検証を進めていこうと思います。 検証内容としては、 BitLlamaの構築 事前学習ができるか(Lossが下がるか)確認 を行いました。使い物になるまで学習するのは手元の環境だと時間がかかりそうだった

          BitNet&BitNet b158の実装②

          自作アーキテクチャのモデルをHuggingFaceにプッシュする方法

          はじめに現在、私は以下のような試みをしています。 その中で、自作アーキテクチャ(Transformersに実装されていない)モデルをHuggingFaceにpushすると、当たり前ではありますがそのアーキテクチャでは重みをloadできないことに気づきました。 なので、 自作アーキテクチャ(Transformersに実装されていない)モデルをHuggingFaceにpush できる限り簡単にAutoClassを使って自作アーキテクチャでモデルをload できる様にする方

          自作アーキテクチャのモデルをHuggingFaceにプッシュする方法

          BitNet&BitNet b158の実装①

          はじめに先週発表された論文『The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits』は多くの人に衝撃を与えたと思います。 それまで量子化とは、有り体に言えば性能を犠牲にメモリ等のコストを抑える手法でした。しかし、BitNet b158(*)では量子化手法としては初めてオリジナルを超える性能を出す可能性を魅せてくれました。 * Githubにある実装名から。以後この記事では名前で元のBitNetとは区別

          BitNet&BitNet b158の実装①

          既存日本語LLMをBitNetで置き換えて実行してみた

          はじめに昨夜からBitNetという1bit量子化LLMが話題になっていました。 簡単な概要としては、 既存のLLMが1パラメータをFP16やBF16などのfloat型で扱っているものを、1パラメータで{-1, 0, 1}しか扱わない様にした。 計算に使う情報量を削ることで、処理速度の向上、メモリの節約が叶う。 3B params以上ではベンチマークスコアの平均で同サイズのLlamaを上回る結果となった。(量子化手法としては初) ということだと思います。 これは元々、今

          既存日本語LLMをBitNetで置き換えて実行してみた

          Google Colabでの日本語Mambaの事前学習

          はじめに昨年(2023年)末にMambaアーキテクチャが公開されました。 MambaはS4などと同様の状態空間モデルというもので、Transformerと比べて、 高速な推論 シーケンス長が伸びた際のメモリ効率の良さ 単純なモデル性能の良さ で優れている様です。 日本語モデルがないので、日本語Mambaの事前学習のコードを作成しました。Google colabで動くことは確認したもののA100(40B)でも15時間近くかかるので実質最後までは実行できないです。コードの

          Google Colabでの日本語Mambaの事前学習

          Mergekitを使ったMoE(Mixture of Experts)作成のテクニック

          はじめに以前行ったMergekitを使った日本語MoEの作成(以下記事)がそこそこ上手くいったものの、かなり手探りで実施した感があった。 そんな中、有志でベストプラクティスがまとめられているのを知ったのでその要約を自分のためにここにまとめようと思う。 忙しい方は4. まとめ だけ読めば雰囲気は確認できると思う。 1. 概要章の構成は以下の通り。 Overview What makes a perfect MoE: The secret formula Using t

          Mergekitを使ったMoE(Mixture of Experts)作成のテクニック

          Google Colab:Mergekitによる日本語モデルMoEの作成

          0. はじめにMistral AIによるMixtral -8x7bモデルの成功により、最近MoE(Mixture of Experts)モデルが流行ってきている気がします。 他にもPhi-2のMoEであるPhixtual-2x2bとかありましたね。 それに倣って、日本語モデルのMoEも作ってみたくなって試してみました。 以下が作ってみたモデルです。 1. Configファイルの作成configファイルにはbase_modelと、expertsを指定する。 positive

          Google Colab:Mergekitによる日本語モデルMoEの作成

          既存日本語ベンチマークについての調査結果

          LLMの日本語性能を確認するためのベンチマークとして、 ・現状使われているもの ・使えそうなもの について調べてみました。 1. 課題感近年、ChatGPTを筆頭としたLLMの成功・活躍から、多くのLLMが発表されています。英語のモデルに遅れてではありますが、そうした流れを受けて日本語に強いモデルも出てきてはいます。 英語モデルは多様な観点でその能力を測るベンチマークが多く整備されています。その種類は、英語テキストからPythonの生成能力を測るHumanEvalや、事実

          既存日本語ベンチマークについての調査結果