佐藤さん卒論
の編集
Top
/
佐藤さん卒論
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
島部/menu/template
[[技術資料]] 大規模言語モデルに組み込む動的適応プルーニングの提案手法 *目次 [#e890b3d5] #CONTENTS *目的 [#x38aa8d3] 莫大なパラメータを保持するLLMは、推論時間や消費電力に課題点がある。 理由として、不必要なパラメータも計算リソースとして含まれるからである。 そのため、本研究の目的はそのような不必要なパラメータを削除し、軽量なモデルの作成を目指す。 *使うモジュールのインストール [#u1248302] ***使用するモジュール [#ta19c6d2] |モジュール|version|用途| |torch||PyTorchはLlama2のような大規模言語モデルのトレーニングに必須| |transformers||モデルの読み込み、トレーニング、評価| |datasets||データセットのロードと前処理| |accelerate||分散学習や混合精度トレーニング| |bitsandbytes||量子化トレーニングや8ビット最適化に利用.| |scipy||統計的な操作や最適化に利用| |optimum|| Hugging Faceのエコシステムで、モデルの最適化(プルーニング、量子化など)をサポート| モジュールのインストールはコマンドプロンプトでpip install モジュール名 バージョンまで指定する場合はコマンドプロンプトでpip install モジュール名==指定するバージョン でインストールする *事前学習モデル、データセットのダウンロード [#ob3ca958] 本研究では、手動でのデータ収集(スクレイピング等)や事前ダウンロードは行わない。 Pythonの transformers および datasets ライブラリの機能(from_pretrained および load_dataset)を用いることで、プログラム実行時にHugging Face Hubから自動的にキャッシュディレクトリへダウンロードおよび読み込みが行われる仕様となっている。 ※なお、使用するGPT-2およびWikiText-2はパブリック公開されているため、Hugging FaceのAPIアクセストークンによる認証プロセスは不要である。 ***Hugging Face Hubとは [#ta19c6d2] 自然言語処理(NLP)や生成AI分野を中心に、世界中のAIモデル、データセット、ツールを共有・利用できる世界最大級のオープンソースAIプラットフォーム ***Transformer [#ta19c6d2] 2017年にGoogleの研究者らによって発表された、ニューラルネットワークの一種です。元々は機会翻訳などの系列変換タスクを想定して開発されましたが、その後ChatGPTのベースとなる技術として大きな注目を集めました。 Transformerの大きな特徴は、「Attention Mechanism」を主体に処理を行う点にあります。従来のニューラルネットワークとは異なるアプローチにより、高い精度と効率性を重視しています。 ***モデルのダウンロード方法 [#ta19c6d2] 今回はGPT-2というモデルを採用した。 transformersモジュール経由で自動ダウンロード。 from transformers import AutoModelForCausalLM, AutoTokenizer # ここでモデルとトークナイザーをダウンロード&読み込み tokenizer = AutoTokenizer.from_pretrained("gpt2") model = AutoModelForCausalLM.from_pretrained("gpt2") このコードでは「Hugging Face Hub」からGPT-2モデルをGoogle Colab(またはローカルPC)の「キャッシュフォルダ」に暗黙的に保存される。そのため、2回目以降の実行ではダウンロードなしで素早く読み込まれます。 ***データセットのダウンロード方法 [#ta19c6d2] 今回はwikipediaのデータセットを使用した。 datasetsモジュール経由で自動ダウンロードされています。 from datasets import load_dataset # ここでデータセットをダウンロード&読み込み dataset = load_dataset("wikitext", "wikitext-2-raw-v1") Hugging Face のサーバーからWikiText-2のテキストデータがダウンロードされる。 *実験手法と実行手順 [#experimental_methods] 本研究では、提案手法の有効性を検証するため、「ベースライン」「AGIP」「AGIP+TA」の3つのアプローチで実験・比較を行う。 以下に各手法の目的、特徴、および実行方法をまとめる。 **ベースライン(従来手法)の実行 [#baseline] ベースライン手法では、高度なプルーニング制御や特殊な更新式を用いず、標準的な学習および単純なプルーニングを実施する。 目的: 提案手法(AGIPやTA)を評価するための基準(ベンチマーク)スコアを作成する。 特徴: 標準的なオプティマイザ(AdamW等)のみを用いてファインチューニングを行うか、あるいは固定率で一度に重みを削除する単純なマグニチュード・プルーニングを行う。 Lossに応じた自動調整機能や、平坦な地形での収束を早める機能は持たない。 実行手順: ベースライン実行用のノートブック(または該当セル)を実行し、学習完了後の最終的なLossおよびPerplexity(PPL)の値を記録する。 **AGIP(適応型プルーニング)の実行 [#agip] AGIP(Adaptive Gradient-based Importance Pruning)では、学習の進行度合い(Loss)に応じて動的にプルーニングの削除率を調整する手法を適用する。 目的: 学習状態に応じた安全なプルーニングを実現し、モデルの崩壊(急激な精度低下)を防ぎながらパラメータを削減する。 特徴: 単純な重みの絶対値ではなく、「重みと勾配の積の絶対値」を重要度スコアとして算出し、層(Layer)ごとに下位パラメータを削除する。 さらに、Lossが大きい時(誤差が大きい時)にはプルーニングの進行を遅らせる安全装置(Safety Mechanism)が組み込まれており、モデルの容量を温存しようとする適応的な挙動を示す。 実行手順: AGIP実行用のコードを起動する。学習プロセスにおいて、指定した目標スパース率(例:33%)に向けて段階的にマスク処理が行われる過程を確認する。 **AGIP+TA(提案手法)の実行 [#agip_ta] 本研究のコアとなる提案手法であり、上記のAGIPに「ターミナルアトラクタ(TA)項」を組み合わせたハイブリッド手法である。 目的: AGIPによるパラメータ削減の安全性に加え、TA項による「有限時間収束性」を付与し、プルーニングによるネットワークの構造破壊から素早くかつ高精度に回復(再学習)させる。 特徴: 重みの更新式に、TA項(分子に誤差のβ乗、分母に勾配ノルムの2乗)を導入している。 これにより、勾配が消失しやすい平坦な領域(プラトー)に陥っても、地形(勾配)の影響をキャンセルし、誤差に基づく駆動力で強制的に収束へ向かわせることができる。 なお、TA項の反発によって一時的にLossが上昇した場合、AGIPの安全装置が強く働き、最終的なスパース率が自動的に低く(例:26%などに)抑えられるという相互作用が発生する。 実行手順: ノートブック「TA+AGIP30%_maxgrad4.0.ipynb」を実行する。 定義された「AGIP_TA_Trainer」クラスを通じて、TA項を組み込んだオプティマイザによる学習とAGIPによるプルーニングが同時に実行される。最終結果として出力されるLossグラフ、PPL、および自動調整された最終スパース率を記録し、ベースラインの手法と比較・考察を行う。
タイムスタンプを変更しない
[[技術資料]] 大規模言語モデルに組み込む動的適応プルーニングの提案手法 *目次 [#e890b3d5] #CONTENTS *目的 [#x38aa8d3] 莫大なパラメータを保持するLLMは、推論時間や消費電力に課題点がある。 理由として、不必要なパラメータも計算リソースとして含まれるからである。 そのため、本研究の目的はそのような不必要なパラメータを削除し、軽量なモデルの作成を目指す。 *使うモジュールのインストール [#u1248302] ***使用するモジュール [#ta19c6d2] |モジュール|version|用途| |torch||PyTorchはLlama2のような大規模言語モデルのトレーニングに必須| |transformers||モデルの読み込み、トレーニング、評価| |datasets||データセットのロードと前処理| |accelerate||分散学習や混合精度トレーニング| |bitsandbytes||量子化トレーニングや8ビット最適化に利用.| |scipy||統計的な操作や最適化に利用| |optimum|| Hugging Faceのエコシステムで、モデルの最適化(プルーニング、量子化など)をサポート| モジュールのインストールはコマンドプロンプトでpip install モジュール名 バージョンまで指定する場合はコマンドプロンプトでpip install モジュール名==指定するバージョン でインストールする *事前学習モデル、データセットのダウンロード [#ob3ca958] 本研究では、手動でのデータ収集(スクレイピング等)や事前ダウンロードは行わない。 Pythonの transformers および datasets ライブラリの機能(from_pretrained および load_dataset)を用いることで、プログラム実行時にHugging Face Hubから自動的にキャッシュディレクトリへダウンロードおよび読み込みが行われる仕様となっている。 ※なお、使用するGPT-2およびWikiText-2はパブリック公開されているため、Hugging FaceのAPIアクセストークンによる認証プロセスは不要である。 ***Hugging Face Hubとは [#ta19c6d2] 自然言語処理(NLP)や生成AI分野を中心に、世界中のAIモデル、データセット、ツールを共有・利用できる世界最大級のオープンソースAIプラットフォーム ***Transformer [#ta19c6d2] 2017年にGoogleの研究者らによって発表された、ニューラルネットワークの一種です。元々は機会翻訳などの系列変換タスクを想定して開発されましたが、その後ChatGPTのベースとなる技術として大きな注目を集めました。 Transformerの大きな特徴は、「Attention Mechanism」を主体に処理を行う点にあります。従来のニューラルネットワークとは異なるアプローチにより、高い精度と効率性を重視しています。 ***モデルのダウンロード方法 [#ta19c6d2] 今回はGPT-2というモデルを採用した。 transformersモジュール経由で自動ダウンロード。 from transformers import AutoModelForCausalLM, AutoTokenizer # ここでモデルとトークナイザーをダウンロード&読み込み tokenizer = AutoTokenizer.from_pretrained("gpt2") model = AutoModelForCausalLM.from_pretrained("gpt2") このコードでは「Hugging Face Hub」からGPT-2モデルをGoogle Colab(またはローカルPC)の「キャッシュフォルダ」に暗黙的に保存される。そのため、2回目以降の実行ではダウンロードなしで素早く読み込まれます。 ***データセットのダウンロード方法 [#ta19c6d2] 今回はwikipediaのデータセットを使用した。 datasetsモジュール経由で自動ダウンロードされています。 from datasets import load_dataset # ここでデータセットをダウンロード&読み込み dataset = load_dataset("wikitext", "wikitext-2-raw-v1") Hugging Face のサーバーからWikiText-2のテキストデータがダウンロードされる。 *実験手法と実行手順 [#experimental_methods] 本研究では、提案手法の有効性を検証するため、「ベースライン」「AGIP」「AGIP+TA」の3つのアプローチで実験・比較を行う。 以下に各手法の目的、特徴、および実行方法をまとめる。 **ベースライン(従来手法)の実行 [#baseline] ベースライン手法では、高度なプルーニング制御や特殊な更新式を用いず、標準的な学習および単純なプルーニングを実施する。 目的: 提案手法(AGIPやTA)を評価するための基準(ベンチマーク)スコアを作成する。 特徴: 標準的なオプティマイザ(AdamW等)のみを用いてファインチューニングを行うか、あるいは固定率で一度に重みを削除する単純なマグニチュード・プルーニングを行う。 Lossに応じた自動調整機能や、平坦な地形での収束を早める機能は持たない。 実行手順: ベースライン実行用のノートブック(または該当セル)を実行し、学習完了後の最終的なLossおよびPerplexity(PPL)の値を記録する。 **AGIP(適応型プルーニング)の実行 [#agip] AGIP(Adaptive Gradient-based Importance Pruning)では、学習の進行度合い(Loss)に応じて動的にプルーニングの削除率を調整する手法を適用する。 目的: 学習状態に応じた安全なプルーニングを実現し、モデルの崩壊(急激な精度低下)を防ぎながらパラメータを削減する。 特徴: 単純な重みの絶対値ではなく、「重みと勾配の積の絶対値」を重要度スコアとして算出し、層(Layer)ごとに下位パラメータを削除する。 さらに、Lossが大きい時(誤差が大きい時)にはプルーニングの進行を遅らせる安全装置(Safety Mechanism)が組み込まれており、モデルの容量を温存しようとする適応的な挙動を示す。 実行手順: AGIP実行用のコードを起動する。学習プロセスにおいて、指定した目標スパース率(例:33%)に向けて段階的にマスク処理が行われる過程を確認する。 **AGIP+TA(提案手法)の実行 [#agip_ta] 本研究のコアとなる提案手法であり、上記のAGIPに「ターミナルアトラクタ(TA)項」を組み合わせたハイブリッド手法である。 目的: AGIPによるパラメータ削減の安全性に加え、TA項による「有限時間収束性」を付与し、プルーニングによるネットワークの構造破壊から素早くかつ高精度に回復(再学習)させる。 特徴: 重みの更新式に、TA項(分子に誤差のβ乗、分母に勾配ノルムの2乗)を導入している。 これにより、勾配が消失しやすい平坦な領域(プラトー)に陥っても、地形(勾配)の影響をキャンセルし、誤差に基づく駆動力で強制的に収束へ向かわせることができる。 なお、TA項の反発によって一時的にLossが上昇した場合、AGIPの安全装置が強く働き、最終的なスパース率が自動的に低く(例:26%などに)抑えられるという相互作用が発生する。 実行手順: ノートブック「TA+AGIP30%_maxgrad4.0.ipynb」を実行する。 定義された「AGIP_TA_Trainer」クラスを通じて、TA項を組み込んだオプティマイザによる学習とAGIPによるプルーニングが同時に実行される。最終結果として出力されるLossグラフ、PPL、および自動調整された最終スパース率を記録し、ベースラインの手法と比較・考察を行う。
テキスト整形のルールを表示する