banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

GPUを必要とせず、Windowsでllama2大規模モデルをローカルに展開し、Pythonインターフェースでテキストを生成します。

こんにちは、今日は Windows での llama2 大規模モデルのローカルデプロイについて話します。

このレッスンでは、Windows 環境で GPU を使用せずに CPU のみを使用して、llama.cpp ライブラリに基づいて llama2 大規模モデルをデプロイして実行します。

image
デプロイが完了したら、Python インターフェースを使用してテキスト生成を行います。

  1. llama2 大規模モデルとは何ですか?

2023 年 7 月 19 日、Meta は無料で商用利用可能な大規模言語モデル Llama 2 をリリースしました。

この取り組みにより、大規模モデルの領域の構図が大きく変わることが予想されます。

772101f8bcff36df26b8347876841a8e
Llama 2 シリーズのモデルには、70 億、130 億、700 億という 3 つの異なるスケールのパラメータがあります。

Llama2 の実際の効果を評価した結果、GPT3 を超え、GPT3.5 に近づいています。

Llama 2 自体については、特に国内の AI 領域に与える深い影響について多くの議論があります。将来的には、専門のビデオで議論する予定です。

それでは、次に手元のパソコンを使用して Llama2 を体験してみましょう。

  1. llama-cpp と llama-cpp-python

大規模言語モデルは、数百億のパラメータを持つことが一般的であり、単一のマシン環境では使用できません。

Llama シリーズでさえ、最小のモデルでも 70 億のパラメータがあり、NVIDIA RTX4090 または A10 が必要です。

image
しかし、あるスーパーエキスパートが Meta の LLaMA モデルを基に、llama モデルを実行するための llama.cpp モジュールを開発しました。

このプロジェクトは、C++ で完全に手作業で作成されており、第三者のコンパイル依存関係はありません。そのため、CPU 条件で大規模モデルの推論を行うことができます。

f88739d9a87bcb1603c7c5663958b59d
さらに、llama.cpp は llama2 モデルだけでなく、Alpaca、chiness-llama、WizardLM などの他のモデルもサポートしており、Python、Go、Node.js など他の言語のインターフェースも提供しています。

次に、llama-cpp の Python 環境を段階的に構築し、大規模言語モデルを単一のマシンで実行します。

  1. Anaconda を使用した環境の構築

環境を構築する前に、事前に Visual Studio をインストールする必要があります。llama-cpp-python のインストール中に llama-cpp をコンパイルするために使用されます。

image
公式の VS ウェブサイトから VS 2022 Community Edition をダウンロードしてインストールできます。

b21eb69ebaa27d2143fe36a5c096addc
VS のインストールが完了したら、anaconda を使用して新しい Python 環境を作成します。Python のバージョンは 3.10 を選択します。

aecdfa5e470a22ac003b405a9b03bc35

次に、環境を開き、pip install llama-cpp-python コマンドを使用して Python インターフェースの llama-cpp をインストールします。

  1. Huggingface からモデルをダウンロードする

Huggingface で量子化された llama2 モデルをダウンロードできます。

具体的には、Huggingface にログインし、TheBloke プロジェクトを見つけ、その中から Llama-2-7B-Chat-GGML モデルを見つけます。

cc5e0f64537d34c319049b3a4aaa1802
ここで説明する必要があるのは、Llama-2-7B は元の 7B バージョンを意味し、Chat はチャットファインチューニングバージョンを意味し、GGML は量子化モデルを意味します。

モデルの量子化は、モデルの圧縮技術の一種です。

ダウンロードリストから、q4_0 バージョンを選択します。

他にも多くのバージョンがあります。

6021330a7bde741f472004872008e44c

簡単に言えば、q4_0 は 4 ビットごとに 1 つの重みを意味し、q5_0 は 5 ビットごとに 1 つの重みを意味します。

数値が大きいほど精度が高くなりますので、適切なものを選択します。

  1. Python プログラムを作成してテキスト生成を行う

環境の構築とモデルのダウンロードが完了したら、Python コードを書くことができます。

プログラムは llama-cpp-python モジュールに依存します。そのインターフェースの使用方法は、プロジェクトのドキュメントで見つけることができます。

838ef90b992fcabae68f8bbc2b2b8c94
プロジェクトのドキュメントを開くと、各パラメータの使用方法がわかります。ここでは詳細な説明は省略しますが、具体的な使用方法は各自でデバッグする必要があります。

6a1fce53284eee7b002f54012d362b21
それでは、簡単なサンプルプログラムを書いてみましょう。

5bdc7d9ebfc06974e8026ccd10826416
まず、llama_cpp をインポートします。

main 関数では、まず Llama モデルを作成し、q4_0 モデルを使用します。

次に、モデルに hello、who are you、how old are you という入力情報を与え、モデルの反応を確認します。

ここでは generate_text という機能関数を実装します。関数にはモデルと入力情報が渡され、モデルの出力結果が返されます。

関数内では、まずメッセージをプロンプトに変換し、プロンプトをモデルに入力して出力を取得します。

出力結果の形式はドキュメントを参考にし、choices の text 文字列を取り出して answer に保存し、answer を返します。

プログラムを実行すると、3 つのテスト結果が得られます。

3d73c6a16ac0302e613e38afce04a4ff
hello を送信すると、llama2 から友好的な返答が返ってきます。

who are you を送信すると、llama2 が自己紹介します。

how old are you を送信すると、llama2 も適切な結果を返します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。