C/C++言語でLLaMAのような大規模言語言語モデルを推論できるフレームワーク「llama.cpp」を教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
目次
llama.cpp
llama.cppは,C/C++言語でLLaMAのような大規模言語モデル(LLM:Large Language Model)を推論できるフレームワークです.
llama.cppの主な目的は,ローカルでもクラウドでも,様々なハードウェア上で最小限のセットアップと最先端のパフォーマンスでLLM推論を可能にすることです.
参考までに,LLaMAはMeta(旧Facebook)が開発したPython言語のオープンソースの大規模言語モデルのフレームワークです.
1 |
$ git clone https://github.com/meta-llama/llama |
ライセンスはLLAMA 2 COMMUNITY LICENSE AGREEMENTです.
LLaMAを含む大規模言語モデルのAIチャットボットを知りたいあなたはこちらからどうぞ.
llama.cppはGitHubでオープンソースとして公開されています.
1 |
$ git clone https://github.com/ggerganov/llama.cpp |
オープンソースのライセンスはMIT Licenseです.
llama.cppの特徴は以下になります.
- 依存関係のないプレーンなC/C++言語で実装
- Appleシリコンを中心にサポート:ARM NEON,Accelerate,Metalフレームワークにより最適化
- x86アーキテクチャのAVX,AVX2,AVX512をサポート
- 1.5ビット,2ビット,3ビット,4ビット,5ビット,6ビット,8ビットの整数量子化により,推論の高速化とメモリ使用量の削減を実現
- NVIDIA GPU上でLLMを実行するためのカスタムCUDAカーネル(HIPによるAMD GPUのサポート)
- VulkanおよびSYCLバックエンドのサポート
- CPU+GPUハイブリッド推論により,VRAM総容量以上のモデルを部分的に高速化
llama.cppがサポートしている大規模言語モデル
2024年8月現在,llama.cppがサポートしている大規模言語モデルは以下になります.
- LLaMA
- LLaMA 2
- LLaMA 3
- Mistral 7B
- Mixtral MoE
- DBRX
- Falcon
- Chinese LLaMA / Alpaca,Chinese LLaMA-2 / Alpaca-2
- Vigogne (French)
- BERT
- Koala
- Baichuan 1 & 2,derivations
- Aquila 1 & 2
- Starcoder models
- Refact
- MPT
- Bloom
- Yi models
- StableLM models
- Deepseek models
- Qwen models
- PLaMo-13B
- Phi models
- GPT-2
- Orion 14B
- InternLM2
- CodeShell
- Gemma
- Mamba
- Grok-1
- Xverse
- Command-R models
- SEA-LION
- GritLM-7B,GritLM-8x7B
- OLMo
- GPT-NeoX,Pythia
- ChatGLM3-6b,ChatGLM4-9b
LLaMA,LLaMA 2,LLaMA 3の論文の日本語訳を知りたいあなたはこちらからどうぞ.
llama.cppを他の言語や環境で実行するプロジェクト
llama.cppを他の言語や環境で実行するプロジェクトが行われています.
代表的なプロジェクトは以下になります.
- Python言語:abetlen/llama-cpp-python
- Go言語:go-skynet/go-llama.cpp
- Node.js:withcatai/node-llama-cpp
※プロジェクト一覧はllama.cppの公式ページにあります.
llama.cppの紹介動画
llama.cppの紹介動画です.
llama.cppの紹介記事
llama.cppの紹介記事は以下になります.
- llama.cpp の動かし方と量子化手法
- 【Llama2】Winodws CPUでのLlama.cppの使い方 | ローカル環境
- Llama.cpp で Llama 2 を試す
- Windows環境で,Llama.cppを用いてローカルLLMを動作させてみた
まとめ
C/C++言語でLLaMAのような大規模言語言語モデルを推論できるフレームワーク「llama.cpp」を紹介しました.
llama.cppは多くの大規模言語モデルをサポートしていることがわかりました.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!