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

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

Avatar for Naka Sho Naka Sho
March 14, 2026
2

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

Avatar for Naka Sho

Naka Sho

March 14, 2026
Tweet

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