11.5K Views
May 26, 24
スライド概要
OSC名古屋2024発表資料です。初心者向け生成AI資料です。
最狂タブレットハッカー。*BSDやLinux大好き。なろうで異世界製造業小説も書いてます Hacking Tablet devices now .I enjoy in opensource conference.
はじめての生成AIローカルLLM、llama.cppとllamafile。練 習演習あり初心者向け講座 1.準備 2.ローカルLLMと生成AI 3. llamafile演習 4.llama.cpp,Ollama他 5.その他 メインテーマ「ガジェット&生成AI」 OSC名古屋2024 2024年5月25日 Place: 中小企業振興会館 15:00〜15:45 発表者:Kapper ガジェットハッキング ユーザーグループ This Presentation: Slideshare & PDF files publication of my HP http://kapper1224.sakura.ne.jp Gadget Hacking User Group Speaker:Kapper
自己紹介 Self Introduction • My name: Kapper • Twitter account:@kapper1224 • HP:http://kapper1224.sakura.ne.jp • Slideshare: http://www.slideshare.net/kapper1224 • Mastodon:https://pawoo.net/@kapper1224/ • Facebook:https://www.facebook.com/kapper1224/ • My nobels:https://ncode.syosetu.com/n7491fi/ • My Togetter:https://togetter.com/id/kapper1224 • My Youtube:http://kapper1224.sakura.ne.jp/Youtube.html • My Hobby:Linux、*BSD、and Mobile Devices • My favorite words:The records are the more important than the experiment. • Test Model:Netwalker、Nokia N900、DynabookAZ、RaspberryPi、Nexus7、Nexus5、Chromebook、GPD-WIN、GPDPocket、Macbook、NANOTE、Windows Tablet、SailfishOS、UBPorts、postmarketOS、NetBSD and The others... • Recent my Activity: • Hacking Generative AI (Images and LLM) in a lot of devices. • Hacking Linux on Windows10 Tablet (Intel Atom) and Android Smartphone. • Hacking NetBSD and OpenBSD on UEFI and Windows Tablet. • I have over 200 Windows Tablet and 120 ARM Android, and test it now. • 後、最近小説家になろうで異世界で製造業と産業革命の小説書いていますなう。
Recently my activities Ollama,llama.cpp Stable-diffuson Windows Tablet Book8088,Pocket386 UMPC OSC,KOF参加
事前ご連絡 • 今回は生成AIの使い方練習講座です • 演習にllamafileを使用します • Githubからダウンロードお願いします Win,Linux,*BSD,Mac,Android対応 https://github.com/Mozilla-Ocho/llamafile • 1部Windowsでは1ファイル4GB以下の データを使用おねがいします • iOSの方はLLMFarmご使用ください (ただし制限あり) • x86の場合はSSE3が必須。あとはメモリ次第 • Phi-3, LLaMA3モデル推奨
llamafileの使い方 • Windowsの場合。名前を変更し.exeを付けて実行 • Unix系の場合。chmod +x ファイル名で実行形式にして • ./llama〜 で実行。ブラウザで チャットモード • モデルを指定する時は -m モデル名 でサーバ版起動 • コマンド実行 ./llamafile -m モデル名 -p "### (質問) ### Response." 後でもう一度ご説明致しますが、気が向いたら練習をお願いします
事前アンケートお願い (挙手にてお願いします) • ①ChatGPTやStable-Diffusionなど生成AIを時々使っている人? • ②仕事もしくは商売で生成AIを使いたい人? • ③ローカルLLM(大規模言語モデル)を使った事がある人? • ④やっぱりLLMより画像生成AIの方が興味がある人? 今日のセミナーのペース時間配分と今後の参考とさせて下さい
生成AIとは? • テキストなど 小さい情報から画像、動画、文章などを生成 • 短時間で複雑なデータを生成可能で生産性が良い • 複雑な計算が必要なので高性能なCPU、GPUが必要 • 大規模言語モデル(Large Language models)が最近有名 • 他にも画像生成AIなど 定番モデルpony diffusion、Animagine XL他 参考としあき wiki https://wikiwiki.jp/sd_toshiaki/SDXLモデル
最近のLLMとは?(Large Language Models大規模言語モデル) • LLMとはChatGPT類似品の総称でText to Textの生成AI • ChatGPTが最大手。1万個のNVIDIA A100 GPUを使いAI学習。 • 出力される情報を他のAIと組み合わせ活用範囲が拡大 • 計算するGPUコストかかりすぎるので、低コストのコンパクトLLM必要 • 英語圏中心で日本語はイマイチ。特に専門用語に弱い • 本質的に何でも出来るAIの必要は無い。高コスト • 自由に改変出来て、自由に使えるライセンスのLLMに注目 • CPUで動かすならWebサーバ、ブラウザも重し。Xさえ不要
LLMの動作原理 • 日本で-一番-人気の-Linux-ディストリビューション-は? A B: 30% C: 20% D: 25% E:10% F:15% 最も確率が高い次の単語(トークン)を計算して文章を作る →学習データに大きく依存する 注意) 上は筆者のイメージです 実際の発生確率とは異なります
エクセルでGPT-2。勉強用 「Spreadsheets-are-all-you-need」 • 勉強用にGPT-2をExcelで再現した シートが公開されている
その他生成AI • 最近生成AI増えたね • ガジェットハッキングLLM作りたい マニアックなファインチューニング エモいキャラクター生成してw • ローカルコミュニティ用LLM必要 • 東海道らぐLLM作りませんか? 他所に真似できない凄いコアなのを
お仕事で生成AI • プログラムレスで色々 • 翻訳、メール作成 • 対話型業務をAIチャットで • 画像、資料を作成 • いつのまにかRPAはどこにいった? 今後のビジネスの中心 • 賢さ ≠ 語彙力、情報量
マルチモーダル化 • 画像を読み取ったり、出力したり • オープンソースではLLAVAモデルが有名 • 複数のAIを組み合わせてさらに色々な事をさせる事ができる
無料APIサーバ • OpenAI社のAPI機能は優秀だがコストが高い • llama.cppとLocalAI,FastAPI,llama-cpp-pythonなどで無料APIサーバを 作れる • ローカルLLMなら自社アプリにライセンス的に組み込める
プロンプトエンジニアリング • そもそも プロンプトとは?システム操作などに使う文字列 • LLMに回答を引き出すための良い文字列の並べ方 • Zero-Shot:事前情報入力なし。一般的な回答 • Few-Shot:具体例追加。より細かい精度UP • CoT:手順を箇条書きで追加。段階的に考え、間違い視覚化 • ToT:回答を自己評価させる • ReAct:Thought、Action、Observationから考えさせる • 深津式:あなたは〜です。#条件〜
プロンプトエンジニアリング参考図書 1冊目(安価) 2冊目(参考書)
有名キャラクターの模倣 • LLMなら色々なモノマネをしてくれます • ChatGPTくらい賢ければ色々な事が出来ます • さらに音声合成で出力させると ヲタクの皆様御用達w
生成AIでこんな使い方も ②生成AI文章作成 ChtGPT llama.cpp など ①音声入力 Whisper.cpp Windowsキー+H など ③音声合成 Voicevoxなど
IPhone,iPadの場合 • 画像生成AIはDraw Things • LLMはLLMFarmがあります • 2020年世代以降推奨 • iPhoneSE第2世代が安い LLMFarm Draw Things
NetBSDの場合(⚹BSD含む) • llamafileがNetBSD+9.2(amd64)に正式対応(要SSE3:エミュレータ注意) • llama.cppはcmakeでNetBSD環境でもビルド可能 • Stable-diffusion.cppもcmakeでビルド可能。画像生成AIも完璧。 GUIもXもCPU負荷とメモリ負荷になるからストイックに不要。 llama.cpp,llamafile Stable-diffusuion.cpp
Termux+Androidなど Ollama llama.cpp Fastsd cpu Stable-Diffusion.cpp
しかし何故今更ローカルLLM? • 手元の機種で 学習し自由に動かせるというロマン • ライセンスを侵害しない範囲で自由に学習・改造出来る • 今後 厳しくなるであろう規制が無い。API無料。有料化対策。 • UNIXなどのマニアックな情報を沢山学習させたい • オリジナルアプリへライセンスフリーで組み込みたいパクりたい • エロいのを作りたい人向け • アンダーグラウンドで危険なLLMを作りたい人向け • キャラクターを模倣させたい人向け • ギャンブル関係のLLMを作りたい人向け • ベンチマークの代わりw しかしChatGPTは 規制用語が入ると・・・
ChatGPT VS ローカルLLM ・ここが凄いここが厳しいChatGPT とにかく賢い。Web検索可能。画像や動画なども? 一部無料。多分赤字経営。MicroSoftが助けてくれる? Wikipediaや論文など校正済み文を利用しているため、マニアックな知識に弱い どんどん規制が厳しくなる。将来どうなることか? ・ここが凄いここが厳しいローカルLLM 安価。オープンソース。API無料 独自辞書、独自知識を学習可能(日本語はまだ弱い) 規制は自由。付けるも無くすも学習済モデル次第。 サーバの経済的理由よりそのうち全てのパソコン、スマホに入るだろう 実はCPU、GPUベンチマークの代替え手段として重宝しているw
ローカルLLM llama.cppとllamafile • LLM禁止職場ではローカルLLM頼み。LLM推論用ライブラリがllama.cpp。MetaのLLaMa2フォーク • ARM Macbookで使えるローカルLLM、だったが機能が爆増。CPU量子化。オープンソース恐るべし • Cosmoporitan Libcと組み合わせたllamafileが1ファイルでインストール不要 Linux、*BSD、Mac、Windowsサポート (MITライセンス)
Cosmoporitan Libc • GCC,Clang対応したマルチOS Cライブラリ。llamafileで使用 • これを使いビルドすると各OSでそのまま動く優れもの • BIOS、Linux、*BSD、Mac、Windowsサポート
llamafileの使い方 • Windowsの場合。名前を変更し.exeを付けて実行 • Unix系の場合。chmod +x ファイル名で実行形式にして chmod +x llama • ./llama〜 で実行。ブラウザで チャットモード • モデルを指定する時は -m モデル名 でサーバ版起動 • コマンド実行 ./llamafile -m モデル名 -p "### (質問) ### Response."
llamafileで練習してみましょう ①ダウンロード後は実行形式に変換 Windowsでは右クリックでファイル名を変更、.exe UNIXではchmod +x llama〜 ②ダウンロードしたら普通に実行 ./llama〜 GPUを使う時は ./llama〜 -ngl 999 実行したらWebブラウザで http://127.0.0.1:8080 を開く を 付ける
llamafileで練習 ③こんな画面が出てくるので一番下の 入力欄に英語で質問 例) Please write sourcecode [Hello World!] in Python and TKinter. 注)Phi-3,LLaMA3なら日本語もOK PythonとTKinterで[Hello World!]の ソースコードを書いて下さい
llamafileで練習 お題:Hello Worldのプログラム作成 日本語(Phi-3) 英語
llamafileで練習 お題:SWOT分析で企業分析 日本語(Phi-3)
llamafileで練習 お題:メール作成、翻訳、文章訂正 日本語(Phi-3)
llamafileで練習 お題:Excel、PowerPointを作成するVBAマクロ 日本語(Phi-3) 日本語(Phi-3)
llamafileで練習 お題:LLMに質問プロンプトを改良させる Stable-Diffusion用のプロンプトを改良 日本語(Phi-3)
llama派生ソフトウェア • Ollama:対話型コマンドラインTUIアプリ、軽量簡単。MITライセンス • PowerInfer:GPU-CPU高速ハイブリッドアプリ。MITライセンス • Distributed-llama:分散型サーバ。RaspberryPiでも動く様設計。 MITライセンス • OnnxStream:RapsberryPi zero2で動く様に設計した省メモリ。重い。 MITライセンス • llama-cpp-python他:各種プログラムで動くllama.cpp
学習済AIモデル • 生成AIは学習済のデータ(モデル)を使用して出力 • 速度と賢さはAIモデルで決まる。有名なのは • Microsoft Phi-3:超高性能小型モデル MITライセンス • Meta LLama3:Meta製オープンソースの走り。Meta llama3 ライセンス • Mistral:高性能対抗馬モデル。Apache-2.0ライセンス • Tinyllama:超小型LLMモデル。Apache-2.0ライセンス • ELYAZA:日本語対応国産LLMモデル。llama2ライセンス • LLaVa:マルチモーダル対応。llama2ライセンス Huggingfaceダウンロード方法:一例 wgetは使えないので注意 curl –LOC - https://huggingface.co/MoMonir/Phi-3-medium-128k-instruct-GGUF/resolve/main/phi-3medium-128k-instruct.Q4_K_M.gguf
LLMモデルと混迷するオレオレライセンス • LLMモデルはオープンソース化したMetaのLLaMaを中心に派生型が多数 • LLMモデルはHuggingFaceでGGUFと検索してダウンロード出来ます • 最近のオススメはPhi-3とllama3。LLMモデル戦国時代。
LLM動作イメージ • 一旦モデルをメモリの中に入れる (大量のメモリが必要) • CPU・GPUで計算 マルチGPU対応 モデル データ CPU,GPU oメモリ メモリ • LoRaがあれば追加 モデル データ LoRa • 結果出力
量子化 • 確率分布の小数点桁数を削って計算 • メモリと負荷低減。数字程精度が落ちない • 画像生成AIは16bit、LLMは3〜16bit • モデルサイズ1GBを切ると回答が難しくなる • BitNet 1.58bitが出たがまだ普及していない
ファインチューニング・LoRa • LLMに追加学習。入れたい不足する情報を追加 • メモリ不足でまだ試していないけどLLaMA-Factory、Deepspeedなど • 要求スペックが高いので次世代機かGoogle Colabを借りる
CPU VS GPU • 現在高速化としてGPUを使うのが主流 • CPU VS GPUの速度は1:20〜100くらいの速度差 • WebサーバとブラウザはCPU、計算はGPUで分担している • CPUで計算するとWebサーバとブラウザの分だけ負担が増える OllamaなどCUIで使うのも良い(Xも不要) • AI 学習は完全にGPU優位。GPUはメモリ確保が大変高価
GPUクラウドを格安でレンタルしたい • 実験やAIモデル学習時にはできればGPUサーバをレンタルしたい • Vast.AI:個人サーバから間借りレンタル。格安 • NovelAI:数少ない限定的月額式。小説は無料、 画像は有料 • Google Colab • Runpod:サーバレスモード • Replicate:モデルが設置済 • Hostkey:色々なGPU
llama.cpp をcmakeでビルド • 本家本体のllama.cppはCで書かれており、cmakeでビルド可能 • NetBSDもビルドOK。類似構造のStable-diffusion.cppも同様 • git clone https://github.com/ggerganov/llama.cpp cd llama.cpp mkdir build cmake -B build • cmake --build build --config Release • NVIDIA,AMD,Intel,MacのGPUにも対応済(BLAS) • Vulkanに対応したのでROCm無いAMDGPUでも動作可能
llama.cppを実行 • 対応しているモデルデータをダウンロードして実行 ./build/bin/server -m (モデルデータ) -c 0 webブラウザで http://127.0.0.1:8080/ を開く • コマンドラインで起動する場合、 ./build/bin/main -m (モデルデータ) -c 0 -p "### 質問 ### RESPONSE."
llama.cppのアップデート(git) • rm –rf build git reset –hard git pull cmake -B build cmake --build build --config Release
Ollamaのインストール(注:Linuxのみ) • Linux版インストール curl -fsSL https://ollama.com/install.sh | sh ollama run llama3 • Mac版、Windows版は公式GitHubからインストラーダウンロー ド
よくある質問・疑問点 • CPUではだめなんですか? --- 遅いだけです。CPUメモリは安い。 • 日本語が賢くないのですが --- 今はPhi-3,llama3が良いです • NVIDIA以外のGPUは動くのですか? --- vulkan,Metalでも動きます • ノートパソコンの内蔵GPUは使えますか? ---メモリ500MBなのできつい • GPUは借りた方が安いですか? --- 学習させるなら時間に応じて • 思ったような回答が出てきません --- プロンプトを工夫 • そもそもローカルでLLMを使う意味は? ---ロマン、商売用、独自規格
まとめ • 簡単な生成AIの使い方と説明 • ローカルLLMを実例に各OSで動作 • Windows,Linux,MacOS,*BSDで生成AI動作確認 • 量子化、ファインチューニング、LoRaを説明 • llama.cppのビルド方法を説明