Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RでローカルLLM

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for HIGUCHI, Chihiro HIGUCHI, Chihiro
December 09, 2024
680

 RでローカルLLM

Avatar for HIGUCHI, Chihiro

HIGUCHI, Chihiro

December 09, 2024
Tweet

Transcript

  1. 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)への淡い期待 …
  2. 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前後のモデルまで?
  3. 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を使用しハルシネーションを抑制する試み
  4. 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/にアクセス
  5. OllamaでLLMを利用 • スタンドアローンで利用 • ollama pull <model> (https://ollama.com/library) • ollama

    run <model> • ネットワークを介しての利用 • 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)
  6. 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))
  7. 動作環境 • 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) → 本構成では実施不可
  8. 文脈内学習(In Context Learning) • Zero-shot • 具体例を与えず照会 • Few-shot •

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