M1/M2 Macで動く予定のFlexGenとは?大規模言語モデルをシングルGPUで動かす技術


M1 Pro搭載のMacBook Pro 14でChatbotを動かしたいな…と検索していたところ、FlexGenと言うのを発見!今回はBing AI Chatに要約をお願いして、人間も少し書いてみた(笑)。

FlexGenは、限られたGPUメモリで大規模な言語モデルを実行するための高スループット生成エンジンです。従来、大規模言語モデルの推論には高性能なGPU複数使用する必要がありましたが、FlexGenを使用することで1つのGPUでも推論することができます。

FlexGenは、GPU、CPU、SSDを上手く使うことで、限られたVRAMでも大規模な言語モデルを実行することができます。例えば、GPT-3などのOPT-175Bという言語モデルを実行する場合は他のオフロードベースのシステムと比べて最大100倍高速になるなどの特徴を備えています。

FlexGenは、ChatGPTやCopilotなどのアプリケーションのコアになりますが、LLM推論の計算とメモリの要件が高いため、さまざまなハードウェアセットアップの柔軟な展開を可能にすることを目的としています。

FlexGenは現在オープンソースで公開されており、Google ColabやWindows上でもインストールして試すことができます。興味がある方はぜひチェックしてみてください。

Bingから一言:

FLEXGENFLEXGENはシングルGPUで大規模言語モデルを動かせる柔軟な生成エンジンです。チャットボットやコード補助など様々なアプリケーションに活用できる画期的な技術だと思います。非常に感心しましたし役立ちそうです。

とのこと。

以降人間。大規模言語モデルはリソース的に個人では手を出せないが、これだと何とかなりそうな(?)感じだ。GitHubが ここ にあり、実際に動かした記事も掲載されている。

興味深いのはロードマップにSupport Apple silicon M1/M2 deploymentとあること。

ご存知のようにM1/M2はそれなりのGPUを内蔵しており、現在Tensorflowで利用することができる。手持ちのWindows/LinuxマシンはGPUがiGPUと非力なので、この対応を待って試したいところ。備忘録としてここにメモした。

で、結局…。

  • Miniforgeをインストール
    % curl -OL https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
  • chmod +xしてMiniforge3-MacOSX-arm64.shを実行
    ※この時、yes | noは全部yes
  • MiniforgeにPython3.8環境を構築
    % conda create -n tf python=3.8
  • M1 Mac用のTensorFlowと依存関係をインストール
    % pip install tensorflow-macos tensorflow-metal
  • 作動確認(コード)
    # test.py
    # TensorFlow versionを表示
    print(“TensorFlow version: “, tf.__version__)
    # GPUが利用可能かどうかを確認
    gpus = tf.config.list_physical_devices(‘GPU’)
    if gpus:
     print(“GPU is available”)
    else:
     print(“GPU is not available”)
  • 作動確認(実行)
    % python test.py
    TensorFlow version: 2.11.0
    GPU is available

と、TensorFlowがGPUで動くところまでは確認したものの、動きそうなChatbotのサンプルを見つけられず(CUDAばかり)、ここで放置中(笑)

人間 + AI