『たった10行のコードで任意のGPUに適合するLLMを作成します』
『任意のGPUに適合するLLMをたった10行のコードで作成』
GPUのVRAMよりも大きいモデルを実行するための巧妙な方法。遅いかもしれないけど、なんとか機能します!
誰が24ギガバイト以上のVRAMを持つGPUにお金を費やす余裕がありますか?特に私たちがそれを試してみたり、使ってみたり、ローカルで実行することで遊びたいときに!私たちはいじくり回す人たちです!そして、ローカルマシンでより大きなモデルを実行する実用的な方法はありませんでした!
トリック
だれが大規模な言語モデルであるGPT3の96層全てを一度に読み込んで処理する必要があると言ったのでしょうか? AirLLMは、一つずつレイヤーを分けて処理し、計算結果をレイヤーごとに運ぶという天才的な方法を考案しました- これはつまり、70Bパラメーターモデルでは、メモリのボトルネックは最も大きなレイヤーであり、4096のパラメーターまたは16384です。これは、少量のメモリで計算するのが非常に簡単な数字です。その後、レイヤーごとの出力を保存し、次のレイヤーの計算に使用します!順方向と逆方向の伝搬中にこれを何度も何度も繰り返します。
OK、ではコードの進行方法をさっそく見てみましょう
pip install airllm# インストールの代替方法 # pip install -i https://pypi.org/simple/ airllm
airllmを使って推論エンジンをセットアップする
# LLaMA-2を実行する場合from airllm import AirLLMLlama2 # Qwenを実行する場合from airllm import AirLLMQWen# ChatGLMを実行する場合from airllm import AirLLMChatGLM
モデルの読み込み
# ゲーテッドモデルにhuggingfaceを使用している場合、エラー401が発生します# 次のコードを実行してHuggingfaceトークンを使用してくださいmodel = AirLLMLlama2("meta-llama/Llama-2-7b-hf", hf_token='YOUR HUGGINGFFACE TOKEN GOES HERE')
推論の実行
# 最大トークン生成長MAX_LENGTH = 128# 入力テキストのリストinput_text = [ 'ザンビアの首都は何ですか?', #'イーロン・マスクはナルシストですか?', ]input_tokens = model.tokenizer(input_text, return_tensors="pt", return_attention_mask=False, truncation=True, max_length=MAX_LENGTH, padding=True) generation_output = model.generate( input_tokens['input_ids'].cuda(), max_new_tokens=20, use_cache=True, return_dict_in_generate=True)#…
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles