マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2024.07.18

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

「GPT-NeoX」とは

概要

「GPT-NeoX」は、
GPU上で大規模言語モデル(LLM)をトレーニングするための
ライブラリです。

「数十億のパラメータを持つLLM」を
効率的にトレーニングできるように設計されており、
NVIDIAのモデルやライブラリをベースに、
独自の最適化も加えられています。

GPT-NeoXは、
オートレグレッシブ言語モデルのトレーニング手法を集約することで、
大規模トレーニングの研究を加速させることを目的としています。

開発元「EleutherAI」

EleutherAIの概要

GPT-NeoXは、
「EleutherAI」によって開発されました。

EleutherAIは、
非営利のAI研究機関であり、
大規模言語モデルの解釈可能性とアラインメントに焦点を当てています。

2020年7月に設立され、
その後、
大規模な人工知能研究に焦点を当てた、
主要な非営利研究機関へと成長しました。

→eleuther.ai →about

活動内容と組織構成

EleutherAIの活動は、
主に公開Discordサーバを通じて行われており、
AI分野の研究について議論したり、
プロジェクトの調整などを行っています。

EleutherAIは、
オープンで協力的な研究モデルを採用しており、
「従業員」「ボランティア」「他の機関の協力者」の区別は
厳密には設けられていません。

研究の焦点

EleutherAIは、
「大規模言語モデルの解釈可能性と調整」に焦点を当てた
非営利のAI研究機関です。

この機関は、
「最先端AIテクノロジーへのアクセス」を提供するために、
「モデルのトレーニングとリリース」や、
「自然言語処理におけるオープンサイエンスの規範の促進」を行っています。

主なプロジェクト

多くのモデルやツールを開発し、
「AIの解釈可能性」「AI倫理」「トレーニングダイナミクス」などに関する
研究を可能にしました。
・GPT-NeoX
・Pythia
・Polyglot-Ko
・trlX
・LM Evaluation Harness など

EleutherAIは、
「Alignment MineTest」や「Eliciting Latent Knowledge」などの
プロジェクトを通じて、
「AIシステムの挙動と人間の価値観の整合性を図る」ことを目指しています。

オフィシャルサイト

→eleuther.ai

リポジトリサイト

→github.com →EleutherAI →gpt-neox

利用コスト

オープンソース

GPT-NeoXはオープンソースであるため、
無料で利用できます。

トレーニングコスト

しかし、
GPT-NeoXは、
「数十億のパラメータを持つ大規模言語モデル」を
トレーニングするためのライブラリであるため、
そのトレーニングには、
一般的に「大規模な計算リソース」と「それに伴うコスト」が必要となります。

実行実績

GPT-NeoXは、
大規模なシステムやハードウェアで実行された実績がありますが、
これらのシステムの利用には、
一般的に高額な費用がかかります。

オープンソースライセンス

ライセンスの種類

GPT-NeoXは、
「Apache License, Version 2.0」の下で
ライセンスされています。

GPT-NeoXのコードについて、
「使用」「変更」「配布」「商用利用」できることを意味します。

NVIDIAのコードと著作権表示

GPT-NeoXのリポジトリには、
「NVIDIAによって書かれたApache License, Version 2.0」の下で
ライセンスされているコードが含まれています。

NVIDIAによって書かれたコードの変更点はすべて、
NVIDIAの著作権表示を保持しています。

このようなヘッダーを含まないファイルはすべて、
EleutherAIの独占的な著作物です。

このリポジトリのすべての派生物は、
Apacheライセンスの条項に基づき、
これらのヘッダーを保持する必要があります。

GPT-NeoXの「特徴」

大規模トレーニングの研究を加速

GPT-NeoXは、
「数十億のパラメータを持つ大規模言語モデル」(LLM)を、
GPUを用いて効率的にトレーニングできるように設計されたライブラリです。

NVIDIAの「Megatron Language Model」と「DeepSpeed」をベースに構築されており、
大規模な自己回帰型言語モデルのトレーニング手法を集約し、
大規模トレーニングの研究を加速させることを目的としています。

制限事項

「一般的な推論ニーズ」には不向き

GPT-NeoXは、
一般的な推論ニーズには適していません。

一般的な推論タスクには、
「Hugging Face Transformersライブラリ」の使用が推奨されています。

このライブラリは、
推論に最適化されており、
GPT-NeoXモデルもサポートしています。

チェックポイントの互換性

GPT-NeoXはトレーニングに重点を置いているため、
そのチェックポイントは、
他の深層学習ライブラリとそのまま互換性があるわけではありません。

GPT-NeoXは、
チェックポイントを「Hugging Face Transformersフォーマット」に変換する機能を
サポートしています。
・モデルを簡単にロードして共有できる
・他のさまざまなフレームワークにさらにエクスポートできる

アーキテクチャ構成の制限

GPT-NeoXは、
「AliBi positional embeddings」などの
さまざまなアーキテクチャ構成をサポートしています。

しかし、
これらの構成のすべてが、
「Hugging Face Transformers内のサポートされている構成」に
明確にマッピングされるわけではありません。

最先端アーキテクチャ

GPT-NeoXは、
最先端アーキテクチャを活用することで、
大規模言語モデルの「トレーニング効率」と「パフォーマンス向上」を
実現しています。

回転位置エンコーディング「RoPE」(Rotary Positional Embeddings)

回転位置埋め込みにより、
位置情報の取り扱いが向上し、
モデルのパフォーマンスが強化されます。

位置エンコーディング技法「Alibi Positional Embeddings」

適応的な位置埋め込みにより、
さまざまなシーケンス長に対応できます。

並列フィードフォワードアテンションレイヤー

並列処理により、
「トレーニング速度」と「モデルのスケーラビリティ」が
向上します。

高速アテンション機構「Flash Attention」

特定のGPUアーキテクチャ(Ampere GPUなど)では、
Flash-Attentionを使用することで、
従来のAttention機構に比べて大幅な高速化を実現できます。

計算を最適化することで、
メモリ帯域幅の使用量を削減し、
計算を高速化できます。

ユーザビリティ

GPT-NeoXは、
広く普及している「Megatron-DeepSpeedライブラリ」と
同じ機能や技術の多くを活用していますが、
ユーザビリティが大幅に向上し、
新しい最適化が施されています。

事前定義構成

人気のアーキテクチャ向けに事前定義された構成が用意されています。
・Pythia
・PaLM
・Falcon
・LLaMA 1&2 など

オープンソースエコシステムとの接続

各種オープンソースエコシステムと容易に接続できます。
・Hugging Faceのトークナイザー
・Transformersライブラリ
・WandBによるロギング
・言語モデル評価ハーネスによる評価 など

スケーラビリティ

分散トレーニングのサポート

GPT-NeoXは、
DeepSpeedライブラリをベースに構築されており、
「ZeRO」や「3D並列処理」による
分散トレーニングをサポートしています。

複数のGPUやノードにわたって、
大規模言語モデルをトレーニングできるため、
非常にスケーラブルな選択肢となっています。

「MoE」(Mixture of Experts)のサポート

GPT-NeoXは、
DeepSpeedの並列処理フレームワーク「MoE」(Mixture of Experts)もサポートしています。

MoEは、
複数の「エキスパートモデル」を組み合わせることで、
モデルの容量と能力を向上させることができる技術です。

2つの異なるMoE実装を選択できます。
・Megablocks
・DeepSpeed

どちらの実装も、
「テンソル-エキスパート-データ並列処理」をサポートしており、
「トークン削除」と「ドロップレス」を切り替えることができます。

効率性

bfloat16のサポート

GPT-NeoXは、
データ型「bf16」(bfloat16)を完全にサポートしており、
トレーニングの高速化とメモリ使用量の削減を実現しています。

「bf16」は、
「FP32」よりもメモリ使用量が少なく、
高速な計算が可能です。

最適化実装

GPT-NeoXは、
「大規模言語モデルのトレーニングに最適化された実装」を
提供しています。

メモリ使用量と通信オーバーヘッドを削減するための
さまざまな最適化が含まれています。

柔軟性

多様なシステムやハードウェアのサポート

さまざまなシステムやハードウェアをサポートしています。
・Slurm
・MPI
・IBM Job Step Managerを介した起動 など

多くの大規模運用実績があります。
・AWS
・CoreWeave
・オークリッジ国立研究所の「Summit」や「Frontier」
・太平洋岸北西部国立研究所
・アルゴンヌ国立研究所の「Polaris」
・LUMI など

カスタムデータの利用

GPT-NeoXは、
独自のデータセットを用いたトレーニングも可能です。

JSONL形式でフォーマットされたデータセットを準備し、
Hugging Faceのトークナイザーライブラリで、
読み込み可能なボキャブファイルとマージファイルを指定することで、
カスタムデータを利用できます。

GPT-NeoXの「機能」

分散トレーニング機能

分散トレーニングの概要

GPT-NeoXは、
大規模言語モデルのトレーニングを効率化するために、
「分散トレーニング機能」を備えています。

これは、
複数のGPUやコンピューティングノードに、
トレーニング負荷を分散させることで、
巨大モデルのトレーニングを現実的な時間で行うことを可能にする技術です。

「ZeRO」(Zero Redundancy Optimizer)

「ZeRO」は、
GPUメモリに最適化パラメータを分散して格納することで、
メモリ使用量を大幅に削減する技術です。

これにより、
より多くのGPUを用いて、
より大きなモデルをトレーニングすることが可能になります。

3D並列化

3つの並列化を組み合わせることで、
トレーニング高速化を実現できます。
・モデル並列化 :モデルパラメータを複数のGPUに分割
・データ並列化 :トレーニングデータを複数のGPUに分割
・パイプライン並列化 :モデルの層を複数のGPUに分割

DeepSpeedとMegatronの統合

GPT-NeoXは、
「DeepSpeed」や「Megatron」などの、
既存の分散トレーニングライブラリを組み合わせることで、
多様なハードウェア環境で
効率的な分散トレーニングを実現しています。

事前定義設定機能

アーキテクチャ構成を簡素化

GPT-NeoXは、
「事前定義設定機能」を提供しており、
一般的なアーキテクチャの構成を簡素化できます。

事前定義設定機能は、
初心者や、
設定に時間をかけたくないユーザーにとって
非常に有用です。

複雑な設定を簡略化することで、
時間と労力を大幅に節約し、
トレーニングプロセスを迅速に開始することが可能となります。

サポートされるアーキテクチャ

事前定義設定機能では、
以下のような人気アーキテクチャの構成が提供されています。

・「Pythia」
・「PaLM」
・「Falcon」
・「LLaMA 1」および「LLaMA 2」 など

カスタマイズ機能

ユーザーは、
事前定義設定を、
自身のニーズに合わせて調整することも可能です。

この機能により、
ユーザーは複雑な設定をゼロから行う必要がなくなり、
迅速にトレーニングを開始できます。

カリキュラムラーニング機能

カリキュラムラーニングは、
モデルの学習効率を向上させるための機能です。

カリキュラムラーニングは、
機械学習の分野において、
人間が学習するように、
「簡単な課題」から「難しい課題」へと徐々に学習を進めることで、
モデルの学習効率を高めるテクニックです。

エコシステム統合機能

GPT-NeoXは、
使いやすさと研究の促進を目指し、
他のオープンソースライブラリやツールと、
容易に接続できるように設計されています。

「Hugging Face Transformers」との統合

GPT-NeoXは、
Hugging Faceの「tokenizersライブラリ」を使用して、
テキストを「モデルが理解できる数値表現」に変換します。

学習済みモデルを互換性のある形式に変換することで、
Transformersがサポートする様々なフレームワークへのエクスポートを容易にします。

「WandB」(Weights and Biases)との統合

「WandB」は、
「機械学習実験の追跡と可視化」を行うためのプラットフォームです。

GPT-NeoXは、
「wandb_group」や「wandb_team」などの設定オプションを使うことで、
「WandBを使った実験の記録」をサポートします。

「言語モデル評価ハーネス」との統合

GPT-NeoXは、
言語モデル評価ハーネスを使用して、
さまざまな「ダウンストリームタスクにおけるモデルの性能評価」をサポートします。

異なるモデルや学習方法について、
客観的に比較評価することが可能になります。

GPT-NeoXの「使用方法」

①インストールと設定

インストール

「Python 3.8」の環境が必要です。
「適切なバージョンのPyTorch 1.8以降」をインストールします。

GPT-NeoXが依存するライブラリの一部は、
「Python 3.10+」と互換性がないため、
「Python 3.8」の使用が推奨されます。

DeeperSpeedに関する注意点

コードベースは、
DeepSpeedライブラリにいくつかの変更を加えたフォークである
「DeeperSpeed」に依存しています。

「Anaconda」「仮想マシン」「その他の環境」の分離が
強く推奨されています。

Fused Kernels

JIT fused-kernelコンパイルにより、
「AMD GPU」(MI100、MI250X)がサポートされています。

「Fused kernels」は、
必要に応じてビルドおよびロードされます。

プラットフォーム固有のコードを変更せずに、
「AMD」「NVIDIA」などの、
さまざまなGPUベンダーの構築プロセスが自動的に調整されます。

Flash Attention

Flash-Attentionを使用するには、
追加の依存関係をインストールし、
構成でアテンションタイプを適切に設定します。

これにより、
「Ampere GPU」(A100など)を含む特定のGPUアーキテクチャで、
通常のアテンションよりも大幅なスピードアップが得られます。

Multi-Node Launching

「NeoX」と「Deep(er)Speed」は、
複数の異なるノードでのトレーニングをサポートしており、
さまざまなランチャーを使用して、
マルチノードジョブを調整できます。

デフォルトランチャー「pdsh」

「pdsh」はデフォルトのランチャーであり、
構成ファイルで設定するだけで、
利用できます。

「MPI」(Message Passing Interface)ライブラリ

MPIを使用する場合は、
構成ファイルにdeepspeed_mpiフラグを渡す必要があります。

コンテナセットアップ

NeoXをコンテナ内で実行する場合は、
「Dockerfile」と「docker-compose構成」も
提供されています。

②構成

GPT-NeoXのパラメータは、
YAML構成ファイルで定義されます。

configsディレクトリには、
さまざまな機能とモデルサイズを示す.ymlファイルの例がいくつか用意されています。

③データセットの準備

定義済みデータセット

「prepare_data.py」エントリポイントを使用して、
「Pileのほとんどのコンポーネント」や「Pileトレーニングセット自体」など、
事前に構成されたデータセットを使用できます。

カスタムデータの使用

独自データを使用してトレーニング用データセットを準備するためには、
1つの大きなjsonl形式のファイルとしてフォーマットし、
辞書リスト内の各アイテムを別のドキュメントにします。

ドキュメントテキストは、
1つのJSONキーの下にグループ化する必要があります。

他のフィールドに格納されている補助データは使用されません。

④トレーニングと微調整

トレーニングは、
DeepSpeedのランチャーのラッパー「deepy.py」を使用して
実行します。

一般的な使用パターン

コマンドを使用してトレーニングを開始します。

実行時に、
任意の数の構成ファイルを渡すことができます。

構成プレフィックスの使用

オプションで構成プレフィックスを渡すこともできます。

すべての構成が同じフォルダにあり、
そのプレフィックスをパスに追加することを前提としています。

構成ファイルの分割

1つの構成ファイルでモデルパラメーターを定義し、
別の構成ファイルでデータパスパラメーターを定義すると、
効率的に構成できます。

微調整の実行

微調整もトレーニングと同様の手順で行うことができます。

トレーニングに使用する構成ファイルに加えて、
微調整用の追加パラメーターを含む構成ファイルを渡すことで、
微調整のプロセスを制御します。

⑤推論

Hugging Face Transformersライブラリの使用

推論に最適化された「Hugging Face Transformersライブラリ」を介して、
「GPT-NeoXライブラリを使用してトレーニングされたモデル」を
デプロイすることが推奨されています。

■主な手順
1.Transformersライブラリのインストール
2.モデルのロード
3.テキスト生成

サポートされる生成タイプ

事前にトレーニングされたモデルからの生成には、
次の3つのタイプがサポートされています。

1.無条件生成
2.条件付き生成 :ファイルから読み込まれた入力に基づく
3.インタラクティブ生成 :コマンドラインインターフェースを介してユーザーと言語モデル間で複数回のやり取りを可能にする

⑥評価

GPT-NeoXは、
言語モデル評価ハーネスを通じて、
ダウンストリームタスクの評価をサポートしています。

評価タスクの例

・読解力と文脈に基づく予測評価「LAMBADA」
・常識的な推論能力評価「HellaSwag」
・物理的な常識評価「PIQA」
・科学的な質問応答評価「SciQ」

評価結果の解析

評価が完了すると、
結果は指定したフォーマットで出力されます。

これにより、
モデルのパフォーマンスを詳細に分析し、
さまざまなタスクに対するモデルの有効性を評価できます。

⑦監視

ローカルログ保存機能に加えて、
一般的な「実験監視フレームワーク」の組み込みサポートが
提供されています。

・機械学習開発者向けプラットフォーム「Weights and Biases」
・TensorFlow付随のウェブベースツール「TensorBoard」

⑧プロファイリング

GPT-NeoXは、
プロファイリングをサポートしています。

・NVIDIAの開発者向け統合性能解析ツール「Nsight Systems」
・PyTorchパフォーマンス分析ツール「PyTorch Profiler」
・PyTorchメモリー使用状況可視化ツール「PyTorch Memory Profiling」

GPT-NeoXの「ユースケース」

ターゲットユーザー

GPT-NeoXは、
高度な技術を持つ研究者や開発者を
ターゲットユーザーとして想定しています。

GPT-NeoXの利用には、
「大規模言語モデル」「深層学習」「分散トレーニング」などに関する
専門知識が必要です。

自然言語処理(NLP)の研究者

GPT-NeoXは、
NLPの幅広いタスクにおいて、
最先端の性能を持つモデルのトレーニングを可能にするため、
NLPの研究者にとって強力なツールとなります。

・新しいモデルアーキテクチャの研究
・大規模データセットを用いたモデルのトレーニング など

人工知能(AI)の研究者

GPT-NeoXは、
大規模言語モデルの能力と限界を探求するAI研究者にとって、
貴重なリソースです。

大規模言語モデルの「推論能力」「知識獲得」「常識推論」などの
分野研究に役立ちます。

計算機科学の研究者

GPT-NeoXは、
「大規模な深層学習モデルの効率的なトレーニング手法」や
「分散トレーニング技術の研究」にも貢献します。

計算機科学の研究者は、
GPT-NeoXのソースコードを研究することで、
大規模モデルの並列化や最適化に関する知見を得ることができます。

産業界の研究開発部門

GPT-NeoXは、
学術界だけでなく、
産業界の研究開発部門にとっても有用なツールです。

・製品開発のためのプロトタイピング
・既存システムの性能向上 など

利用例

GPT-NeoXは、
多くの「学術機関」「企業」「政府機関の研究室」で、
広く使用されています。

・オークリッジ国立研究所
・CarperAI
・Stability AI
・Together.ai
・カーネギーメロン大学
・東京大学 など

大規模言語モデルのトレーニング事例

大規模言語モデル

・EleutherAI「GPT-NeoX-20B」
・EleutherAI「Pythia」(70Mから13Bまで)
・EleutherAI「LLeMMA」(34B)
・CarperAI「FIM-NeoX-1.3B」
・StabilityAI「StableLM」(3Bおよび7B)

多言語言語モデル

・EleutherAI「Polyglot-Ko」
・Stability AI「Japanese Stable LM」

コードモデル

・Carnegie Mellon University「PolyCoder」「CAT-LM」
・StabilityAI「StableCode」「StableCode-Completion-Alpha」

科学向けAI

・Oak Ridge National Lab「FORGE」
・Oak Ridge National Lab+EleutherAI「物質科学分野のモデル」
・Pacific Northwest National Lab「MolJet」

研究分野への応用

自然言語処理(NLP)

GPT-NeoXは、
大規模言語モデルのトレーニングと評価のための主要なフレームワークとして、
NLPの研究を大きく前進させています。

・文章生成
・機械翻訳
・質疑応答
・文章要約
・感情分析

数学

GPT-NeoXは、
数学における「定理証明」や「問題解決」などの
高度な推論タスクを自動化する研究にも利用されています。

■LLeMMA
・GPT-NeoXをベースに数学のデータセットで追加学習させたモデル
・数学の問題を理解し解答生成

■ProofNet
・GPT-NeoXを用いて「数学定理の自動証明」を目指す研究プロジェクト

化学

GPT-NeoXは、
「分子設計」や「特性予測」などの
化学分野の課題解決にも貢献しています。

■MolJet
・GPT-NeoXを用いて分子構造とテキスト情報を関連付ける
・新しい分子の設計を支援するモデル

ソフトウェア開発

GPT-NeoXは、
「コード生成」や「バグ修正」などの
ソフトウェア開発の自動化にも応用されています。

・PolyCoder
・StableCode

社会科学

GPT-NeoXは、
テキストデータ分析を通して、
社会現象の理解や予測を行う社会科学の研究にも活用されています。

GPT-NeoXを用いた研究では、
大規模言語モデルが、
人間の認知バイアスを学習している可能性が示唆されています。

【お知らせ】「マジセミ」のご紹介

「マジセミ」では、日々、多くのIT関連セミナーを開催しています。

多くのセミナーの中から「ご自身のスキルやビジネスを強化できるセミナー」を見つけて、
ぜひ1度、ご参加ください。

マジセミのイメージロゴ

マジセミ関連プラットフォーム

プラットフォーム 説明 URL
マジセミ マジセミで実施されるさまざまなセミナーの開催情報を確認できます。
「IT関連セミナー」「製造業関連セミナー」など、ご自身のビジネスを強化できるセミナーを検索できます。
→majisemi.com
マジセミサービス 「セミナーを開催したい方」向けの情報を確認できます。
トライアルからの利用が可能です。
→majisemi.com →service
YouTubeマジセミ動画①
IT製造業DX
「マジセミ」で開催している年間1000回のウェビナーの中から、「IT業界と製造業DX」の最新トレンドをサマリー動画でお届けします。 →youtube.com
→@majisemi
YouTubeマジセミ動画②
ITセキュリティ
ITセキュリティの最新トレンドに関するものを集めてサマリー動画でお届けしています。 →youtube.com
→@majisemisecurity
マジセミドライブ 「AIツール実験室」などの、IT関連コンテンツを紹介しています。 →majisemi.com
→topics
マジセミFacebook 毎日「マジセミ関連情報」や「IT関連ニュース」などを紹介しています。 →facebook.com
→OSSNews
マジセミX(Twitter) マジセミFacebookと同様に投稿しています。 →twitter.com
→Majisemi_it
マジセミInstagram マジセミFacebookと同様に投稿しています。 →instagram.com
→majisemi_it/
マジセミThreads マジセミFacebookと同様に投稿しています。 →threads.net
→@majisemi_it
マジセミBluesky マジセミFacebookと同様に投稿しています。 →majisemi.bsky.social

おすすめの記事

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

OSS情報

2024.07.18

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

「 GPT-NeoX 」は、GPU上で大規模言語モデル(LLM)を効率的にトレーニングするためのライブラリです。NVIDIAのモデルを基に独自の最適化が加えられ、オートレグレッシブ言語モデルのトレーニング手法を集約しています。

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

ウェビナーまとめ

2024.05.15

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

OSS情報

2024.07.04

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

「 Hoppscotch 」は、オープンソースのAPI開発エコシステムで、使いやすさとアクセシビリティを重視した軽量なWebベースのスイートです。無料版と有料版があり、PostmanやInsomniaの代替として利用可能です。