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

無料で使える「LM Studio」でローカルLLM入門

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Naka Sho Naka Sho
March 14, 2026
2

無料で使える「LM Studio」でローカルLLM入門

Avatar for Naka Sho

Naka Sho

March 14, 2026
Tweet

More Decks by Naka Sho

Transcript

  1. 今日のアジェンダ 1. LM Studio とは? 2. LM Studio のインストール方法 3.

    LM Studio の基本的な使い方 4. Java で LLM にアクセスしてみよう( LangChain4j ) 5. Function Calling ( Tool use )と RAG で外部情報を利用する 6. MCP サーバーと MCP クライアントを作る 2
  2. LM Studio とは? ローカル PC で LLM を簡単に動かせるデスクトップアプリ GUI で直感的にモデルをダウンロード・管理

    チャット UI ですぐに試せる OpenAI 互換の API サーバーを内蔵 http://localhost:1234/v1 でアクセス可能 ( 設定で変更可 ) 既存の OpenAI 向けコードがそのまま動く Windows / macOS / Linux 対応 完全無料 4
  3. なぜローカル LLM ? クラウド API ローカル LLM コスト 従量課金 無料

    プライバシー データが外部に送信 データが PC 内で完結 オフライン カスタマイズ 制限あり 自由 性能 非常に高い PC スペック依存 開発・検証・学習用途には最適! 5
  4. インストール手順 1. 公式サイトからダウンロード https://lmstudio.ai 2. インストーラーを実行 Windows: .exe を実行 macOS:

    .dmg を開いて Applications にドラッグ Linux: .AppImage を実行 3. 起動して完了! 特別な設定は不要。すぐに使い始められます。 モデルのダウンロードにはそれなりの容量が必要(例 : 12GB 〜) 7
  5. 無印と GGUF の違い 無印( base モデル) オリジナルの形式( float16/32 ) 高精度だがメモリ消費が大きい

    ハイスペック GPU が必要 GGUF (量子化モデル) 精度を少し落として圧縮したフォーマット 一般的な PC の CPU/GPU で動作可能 一般 PC で動かすなら GGUF がおすすめ! lmstudio-community とか Qwen の公式モデルをおすすめします LM Studio 用に最適化されています 10
  6. パラメータ数の違い モデル パラメータ数 特徴 4B 40 億 軽量・高速レスポンス 9B 90

    億 バランス型 27B 270 億 高い推論能力 35B 350 億 より複雑なタスクに対応 11
  7. パラメータ数が意味すること パラメータが少ない( 4B 〜 9B ) 知識の引き出しが少ない 複雑な思考は苦手 身軽なのでパッと素早く答えられる パラメータが多い(

    27B 〜 35B ) 知識の引き出しが多い 文脈を読んだり複雑な論理を組み立てるのが得意 GPT、OPUS、Gemini など普段使っているモデルは 1 兆個以上のパラメータを持っていると言われています(実際は非公開) 12
  8. モデルの起動とチャット 1. モデルをロード ダウンロードしたモデルを選択して「 Load」 2. チャットで試す LM Studio 内蔵のチャット

    UI で会話 3. API サーバーを起動 「Local Server」 タブからサーバーを起動 http://localhost:1234/v1 で待ち受け # curl で動作確認 curl http://localhost:1234/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "any", "messages": [{"role": "user", "content": "Hello!"}]}' 13
  9. 実際の動作パフォーマンス 参考値( 20B モデル / Vulkan GPU 利用時) 生成速度 :

    約 7.4 tokens/ 秒 VRAM 使用量 : 約 11.7GB パフォーマンスに影響する要素 GPU/CPU のスペック モデルのパラメータ数・量子化レベル コンテキスト長の設定 モデルサイズと PC スペックのバランスが重要! まずは小さいモデル( 4B 〜 9B )から試すのがおすすめ 14
  10. LangChain4j とは? Java で LLM アプリケーションを構築するためのフレームワーク Python の LangChain にインスパイアされた

    Java ライブラリ // build.gradle dependencies { implementation 'dev.langchain4j:langchain4j:1.2.0' implementation 'dev.langchain4j:langchain4j-open-ai:1.2.0' implementation 'dev.langchain4j:langchain4j-http-client-jdk:1.2.0' } 16
  11. LM Studio への接続設定 # application.yaml llm: base-url: http://localhost:1234/v1 api-key: dummy

    model-name: Qwen2.5-7B-Instruct temperature: 0.8 request-timeout-seconds: 300 context-window: 262144 max-tokens: 262144 @ConfigurationProperties(prefix = "llm") public record LlmProperties( String baseUrl, String modelName, String apiKey, Double temperature, Long requestTimeoutSeconds, Integer maxTokens, Integer contextWindow ) {} 17
  12. ChatModel の構築 @Bean public OpenAiChatModel chatLanguageModel() { return OpenAiChatModel.builder() .baseUrl(llmProperties.baseUrl())

    .apiKey(llmProperties.apiKey()) .modelName(llmProperties.modelName()) .temperature(llmProperties.temperature()) .maxTokens(llmProperties.maxTokens()) .timeout(Duration.ofSeconds( llmProperties.requestTimeoutSeconds())) .build(); } LM Studio では dummy で OK パプリッククラウドやプライベートクラウドでは必須 18
  13. 実際のリクエスト(デバッグログ) POST /v1/chat/completions に OpenAI 互換の JSON 形式で送信 LM Studio

    で起動中のモデルを指定 temperature , max_tokens などのパラメータも確認できる 19
  14. AiService インターフェース public interface AiService { String chat(@UserMessage String userMessage);

    TokenStream stream(@UserMessage String userMessage); } @Bean public AiService assistant(OpenAiChatModel model, OpenAiStreamingChatModel streamingModel, ChatMemory chatMemory, ContentRetriever contentRetriever) { return AiServices.builder(AiService.class) .chatModel(model) .streamingChatModel(streamingModel) .chatMemory(chatMemory) .tools(weatherService) // Function Calling .contentRetriever(contentRetriever) // RAG .toolProvider(mcpToolProvider) // MCP Client .build(); } 21
  15. Function Calling とは? LLM が外部のツール(関数)を呼び出せる仕組み ユーザー: 「福岡の天気を教えて」 ↓ LLM: 「天気取得ツールを呼ぼう」→

    getWeather(" 福岡") ↓ ツール実行 → 天気データ取得 ↓ LLM: 「福岡の天気は晴れです... 」 LLM 単体では知り得ないリアルタイム情報にアクセスできる LLM が自律的にどのツールを使うか判断する 24
  16. LangChain4j での実装 @Service public class WeatherService { @Tool(" 与えられた場所の天気の情報を取得します。") public

    String getWeather(String place) { log.info("place: {}", place); return " 晴れ 最高気温25 度"; } @Tool(" 現在時刻を返します") public String getTime() { return LocalDateTime.now().toString(); } } // AiService にツールを登録するだけ AiServices.builder(AiService.class) .chatModel(model) .tools(weatherService) // ← ツールを渡すだけ! .build(); 25
  17. Function Calling デ モ 「what time is it time? 」

    と質問 LLM が getTime() ツールを 自動呼び出し 現在時刻を取得して回答を 生成 LLM 自身は時計を持たない が、ツール経由で取得でき た 26
  18. RAG ( Retrieval-Augmented Generation ) 検索で取得した情報を LLM の回答に活用する手法 質問 →

    ベクトル検索 → 関連ドキュメント取得 → LLM に渡して回答生成 @Bean public EmbeddingStore<TextSegment> embeddingStore( EmbeddingModel embeddingModel) { InMemoryEmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>(); List<String> documents = List.of( "LM Studio はローカルで動くデスクトップアプリです...", "GGUF は量子化されたモデル形式で...", "LangChain4j はJava でLLM アプリケーションを...", "MCP はModel Context Protocol の略で...", "Function Calling はLLM が外部のツールを..." ); // Embedding モデルでベクトル化して登録 for (String text : documents) { var embedding = embeddingModel.embed(text).content(); store.add(embedding, TextSegment.from(text)); } return store; } 27
  19. RAG デモ 「LM Studio について」と質問 登録済みドキュメントから 関連情報を検索 LLM が検索結果をもとに回答 を生成

    LLM の学習データにない情 報でも回答できる Embedding モデルもローカ ルで動作 28
  20. MCP ( Model Context Protocol )とは? LLM とツールを繋ぐ標準プロトコル LLM アプリ(MCP

    クライアント) MCP MCP サーバー(ツール提供) 外部サービス(GitHub, ファイルシステムなど) Anthropic が提唱したオープン標準 ツールの発見・呼び出しを統一的に行える 様々な MCP サーバーが公開されている 30
  21. MCP サーバーを自作する( Spring AI ) @Service public class McpServerTools {

    @Tool(description = " 与えられた場所の天気の情報を取得します。") public String getWeather(String place) { ... } @Tool(description = " 現在時刻を返します") public String getTime() { ... } } @Bean public ToolCallbackProvider mcpToolCallbackProvider( McpServerTools mcpServerTools) { return MethodToolCallbackProvider.builder() .toolObjects(mcpServerTools) .build(); } Spring AI の @Tool ( org.springframework.ai.tool.annotation.Tool )を使用 LangChain4j の @Tool とは別のアノテーション 31
  22. MCP サーバー デモ( LM Studio から接続) LM Studio の設定に http://localhost:8080/sse

    を登録 「今日の福岡の天気は?」 → getWeather を自動呼び出し Spring Boot アプリがツールを実行して結果を返す 32
  23. MCP クライアントの実装( Filesystem MCP ) @Bean @ConditionalOnProperty(name = "mcp.filesystem.enabled", havingValue

    = "true") public McpClient filesystemMcpClient() { McpTransport transport = new StdioMcpTransport.Builder() .command(commandWithArgs) .logEvents(true) .build(); return new DefaultMcpClient.Builder() .transport(transport) .build(); } # application.yaml mcp: filesystem: enabled: true command: /path/to/node args: /path/to/server-filesystem/dist/index.js,/tmp 33
  24. MCP クライアント デモ 「/tmp/demo.txt の内容を教え て」 read_file ツールを自動呼 び出し /tmp/demo.txt

    の実際の内容 を読み取って回答 VSCode で実ファイルと一致 を確認 34
  25. まとめ LM Studio + LangChain4j でできること 1. 無料でローカル LLM を動かせる

    2. OpenAI 互換 API で既存コードがそのまま使える 3. ストリーミングでリアルタイム応答 4. Function Calling で LLM が自律的に外部ツールと連携 5. RAG でドメイン知識を活用 6. MCP で標準化されたツール連携 ローカル LLM は開発・検証・学習の強力なパートナー! 35