FPGAを使用した軽量言語モデルの実行環境
SwanはC++で実装されたOSSプロジェクトです。
HLS(High-Level Synthesis)を利用して汎用FPGA上で言語モデルを動かすことを目的としています。
このプロジェクトは、言語モデルの推論をFPGA上で実現し、エッジデバイスやリソースが限られた環境でのAIアプリケーションをサポートすることを目指します。
- 汎用性: KV260などの一般的なFPGAボードに対応しています。
- 拡張性: ソースコードはC++で記述されており、カスタマイズや拡張が容易です。
- 軽量: 言語モデルのサイズに対する制約を考慮し、効率的なアーキテクチャを採用しています。
Swanをビルドおよび実行するには、以下のツールやライブラリが必要です。
- CMake
- g++
- HLSツール(Vivado HLSなど)
Swanリポジトリをクローンするには、以下のコマンドを実行します:
$ git clone [email protected]:turingmotors/swan.git
$ cd swan
huggingface.co/karpathy/tinyllamasからTinyStories datasetで学習されたパラメータファイルをダウンロードします:
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin -O model/stories15M.bin
wget https://raw.githubusercontent.com/leloykun/llama2.cpp/master/tokenizer.bin -O model/tokenizer.bin
FPGA環境でSwanをビルドする方法は、こちらのテックブログをご覧ください。
$ mkdir -p build && cd build
$ cmake ..
$ make && cd ..
ビルドが完了したら、以下のコマンドでSwanを実行できます。
$ ./build/swan
Swanは以下のオプションをサポートしています。
Usage: ./build/swan [options]
Options:
--weight_path : Weight file path
--vocab_path : Tokenizer file path
--max_seq : Maximum sequence length
--temp : Temperature for sampling
--color : Enable color output
--log : Enable log output
--help, -h : Show this help message
このプロジェクトはllama2.cを参考にしています。
このプロジェクトはApache License 2.0のもとで公開されています。
Swanへのコントリビューションは大歓迎です。IssueやPull Requestを通じて、フィードバックや改善提案をお寄せください。
Turing株式会社は、Swanの開発を支援しています。