Slide 1

Slide 1 text

RでローカルLLM 医薬基盤・健康・栄養研究所 東京科学大学 樋口千洋 2024/12/10 統計数理研究所共同利用研究集会「データ解析環境Rの整備と利用」

Slide 2

Slide 2 text

2023年のローカルLLM利用事情 • 動かすだけでも高性能なGPU搭載PCが必要だった • A100クラスのGPUが何枚も必要とされた→1千万円以上? • RNNベースのRWKVモデルの登場 • https://note.com/shi3zblog/n/na991171b8fdd • Transformerは計算量が膨大 • 本環境はたしかA6000無印 (48GB)を使用→それでも高額 • SLMと呼ばれる小規模な言語モデルの登場 • 量子化手法によるメモリ節約 • 16ビット浮動小数点精度を諦め8ビットで格納量を2倍にする • Bitnet(1.58bit)への淡い期待 …

Slide 3

Slide 3 text

2023年の研究集会で話したこと

Slide 4

Slide 4 text

2024年になると状況は一変 • Ollamaを使えば非GPU PCでも容易にローカルLLM利用可 • ほかにもLMstudioやvLLM、MLX(Apple silicon) • Ollamaで使えるLLMは https://ollama.com/libraryで公開 • 今春(2024/5)の大阪24時間AIハッカソンでollamaを使用 • https://note.com/shi3zblog/n/n1c5313748849 • 64GB搭載のMacBookProでCohereのCommand-Rモデル利用 • https://pc.watch.impress.co.jp/docs/column/nishikawa/1582380.html • レスポンスは問題なし • GPUがあるならあったほうが速いが、モデルがロードできないと意味がない • モデルサイズ59GBのCommandR+の利用は本環境では厳しい • CommandR-35Bは19GB→24GBVRAMのGPUでも厳しい? • コンシューマー用GPUは大きくてVRAM容量は16GB→8GB前後のモデルまで?

Slide 5

Slide 5 text

https://ollama.com/library/llama3.1 何故ローカルLLMにこだわるか? • 個人情報データ解析の現場ではインターネットが使えない • プロトタイプ試作時の頻繁な利用 • プロンプト(文脈内学習)の検証 • 大規模(パイプライン)なアクセス検証 • 公開されたローカルLLMの利用は無料 • トークン⾧(文脈内学習に大きく影響) • GPT-4oの最大トークン⾧は8192 • Geminiの最大トークン⾧はとても大きいがGemmaはそうでもない • Llama3.1の最大トークン⾧は128k • 128kのトークンを与えてちゃんと動くかどうかは別 • トークン⾧が多いと商用LLMの場合はAPI利用料が膨大 • ⾧文プロンプトによる文脈内学習(ICL)はRAGを凌ぐという報告も • RAG(Retrieval Augmented Generation) • 外部データベースによる情報から生成AIを使用しハルシネーションを抑制する試み

Slide 6

Slide 6 text

OllamaでローカルLLMを利用

Slide 7

Slide 7 text

Ollamaのインストールと起動(Ubuntu) • Ollamaのインストールとサービス起動 • シェル • Curl –fsSL https://ollama.com/install.sh | sh • Sudo systemctl start ollama • Docker • docker run -d [--gpus=all] -v ollama:/root/.ollama -p 11434:11434 -- name ollama ollama/ollama • Singularity (上記Dockerイメージを変換) • sudo singularity build ollama.sif docker-daemon://ollama/ollama • singularity exec –nv ollama.sif ollama serve • http://XXX.XXX.XXX.XXX:11434/にアクセス

Slide 8

Slide 8 text

OllamaでLLMを利用 • スタンドアローンで利用 • ollama pull (https://ollama.com/library) • ollama run • ネットワークを介しての利用 • curlでhttp://xxx.xxx.xxx.xxx:11434/をアクセス • Open WebUI • Python/JS (正式サポート) • LangChain、LlamaIndex • Dify、Replit、Bolt.new-multiLLM • Emacs • R! • Rollama/cranパッケージ • https://github.com/cran/ollamar→localhostだけしかアクセスできない? • 注意点 • LLMへ渡すトークン⾧が規定値2048→制限解除が必要(num_ctx)

Slide 9

Slide 9 text

rollamaパッケージ • ライブラリのロード • library (rollama) • 接続 • options (rollama_server = “http://example.com:11434/”) • LLMの導入 • pull_model (“nemotron”) # ollama側でpullするので使わない • 導入したローカルLLMの一覧 • list_models () • モデルの指定 • options (rollama_model = “llama3.2-vision”) • options (rollama_model = “7shi/tanuki-dpo-v1.0”) • チャット • new_chat () • query (q = <プロンプト文字列>, model_params = list (num_ctx = XXXX))

Slide 10

Slide 10 text

GENIAC 松尾研 LLM開発プロジェクト • https://huggingface.co/weblab-GENIAC/Tanuki-8x8B-dpo-v1.0

Slide 11

Slide 11 text

https://www.docswell.com/s/KanHatakeyama/5YDDJE-2024-09-18-214202#p7 大規模言語モデル Tanuki-8x8Bの紹介と開発経緯など Ollamaでも提供

Slide 12

Slide 12 text

動作環境 • PC • DELL XPS 8950 / 32GB RAM / GeForce RTX 3070 (8GB) • OS • Ubuntu 24.04 LTS • Ollama • Version 0.4.5 • 一昨日ollama 0.5.0ローンチ • Json出力 • Llama 3.3 70b (42GB) → 本構成では実施不可

Slide 13

Slide 13 text

文脈内学習(In Context Learning) • Zero-shot • 具体例を与えず照会 • Few-shot • 具体例を一例与えて照会 • Chain of Thought (CoT) • 推論プロセスを指示 • 単語の中に特定の文字がいくつ含まれるかは1文字づつにして文字を調べる • Sapporo.RやYakitori.Rの中にRはいくつある?

Slide 14

Slide 14 text

ICLのrollamaパッケージによる実行例 • rollamaパッケージのvignetteから

Slide 15

Slide 15 text

マルチモーダル(llama3.2-vision)

Slide 16

Slide 16 text

マルチモーダル(Marco-o1)

Slide 17

Slide 17 text

でアブストラクトを翻訳

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

おわりに • (ローカル)LLMは身近になってきた • 身近どころか積極的に研究の道具として活用 • Rと組み合わせて新しい探索的研究 • RAGもやりたいがライブラリなしには厳しいかも • reticulateパッケージを使う? • 文脈内学習で頑張る!

Slide 20

Slide 20 text

ご清聴 ありがとうございました