<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>LLM on Ingenboy.inc</title>
    <link>https://blog.ingenboy.com/categories/llm/</link>
    <description>Recent content in LLM on Ingenboy.inc</description>
    <image>
      <title>Ingenboy.inc</title>
      <url>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Tue, 23 Sep 2025 21:54:58 +0900</lastBuildDate>
    <atom:link href="https://blog.ingenboy.com/categories/llm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ubuntu 24.04 で RTX 5060 Ti を動かすまでの奮闘記</title>
      <link>https://blog.ingenboy.com/post/gpu_installation_fight/</link>
      <pubDate>Tue, 23 Sep 2025 21:54:58 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/gpu_installation_fight/</guid>
      <description>&lt;h1 id=&#34;概要&#34;&gt;概要&lt;/h1&gt;
&lt;p&gt;2025年9月、RTX 5060 Ti を新マシンに差して Ubuntu 24.04 を入れたら…案の定ドライバ認識でドハマりしました。
この記事では、最初に遭遇したエラーから、最終的に nvidia-smi で 5060 Ti が認識されるまでの流れをまとめます。&lt;/p&gt;
&lt;h1 id=&#34;1-最初に出た症状&#34;&gt;1. 最初に出た症状&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;lspci では GPU が見えている（NVIDIA Corporation Device 2d04）。&lt;/li&gt;
&lt;li&gt;しかし nvidia-smi を叩くとエラー：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NVIDIA-SMI has failed because it couldn&amp;#39;t communicate with the NVIDIA driver.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;dmesg には probe failed with error -1 が連発。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この時点では「ドライバが GPU を見つけてるけど、初期化に失敗してる」状態でした。&lt;/p&gt;
&lt;h1 id=&#34;2-csm-と-uefi-の壁&#34;&gt;2. CSM と UEFI の壁&lt;/h1&gt;
&lt;p&gt;調べてみると、自分の Ubuntu は Legacy (CSM有効) モードでインストールされていたことが発覚。
最新の GPU は UEFIブート前提 なので、CSM 有効だと GPU 初期化に失敗しがちです。&lt;/p&gt;
&lt;h2 id=&#34;対応したこと&#34;&gt;対応したこと&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;BIOS で CSM を OFF&lt;/li&gt;
&lt;li&gt;Above 4G Decoding = Enabled&lt;/li&gt;
&lt;li&gt;Resizable BAR = Enabled&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;そして Ubuntu を UEFIモードで再インストール
これで「Bootable device not found」問題も解決し、環境が最新GPUに対応できるようになりました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create_RAG</title>
      <link>https://blog.ingenboy.com/post/create_rag/</link>
      <pubDate>Fri, 06 Jun 2025 17:50:17 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/create_rag/</guid>
      <description>&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;gmailの返答を自動化するプロジェクトを推進しています。
そこで、RAGですね。もうだいぶ時間が経っていますが、しっかりやっていきたいと思う。
RAG = 「Retrieval-Augmented Generation」
これを理解できればもう仕組みを理解したも同然です。
が一応説明しておきます。&lt;/p&gt;
&lt;h1 id=&#34;ragの仕組み&#34;&gt;RAGの仕組み&lt;/h1&gt;
&lt;p&gt;めっちゃ簡単にいうと、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ベクトルデータベースに保存されたナレッジから&lt;/li&gt;
&lt;li&gt;問い合わせと類似するナレッジを検索し引っ張り出し&lt;/li&gt;
&lt;li&gt;それを元にGEN AIに回答を作らせる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という流れになります。&lt;/p&gt;
&lt;p&gt;1でベクトルデータベースにナレッジを保存する時には、元の自然言語をベクトル表現に変換した物を格納する必要があります。
このベクトル変換器のことを「Embedding model」と言います。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;x: 自然言語
f: Embedding model
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とすると&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;y = f(x)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で得られたy（とそれに対応するx）をベクトルDBに格納しておくわけですね。&lt;/p&gt;
&lt;p&gt;x_q: 問い合わせが来た時&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;y_q = f(x_q)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;から得られるy_qと類似しているy_1, y_2, y_3, ,,, y_nを検索し、
それに対応するx_1, x_2, x_3, ,,, x_n
を出力し、&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ans = LLM(x_1, x_2, x_3, ,,, x_n)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とう感じで回答を作らせるという流れです。&lt;/p&gt;
&lt;h1 id=&#34;embedding-modelsの選定&#34;&gt;Embedding modelsの選定&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://qiita.com/ke-suke-Soft/items/f904a442d8ce0e6b7522&#34;&gt;こちらの記事&lt;/a&gt;に書いてある通り、Embedding modelの選定がRAG全体の回答生成性能に大きく影響する。
まあ、chatGPTに聞いた結果これが一番いいのかな。
&lt;a href=&#34;https://huggingface.co/BAAI/bge-base-en&#34;&gt;BAAI/bge-base-en&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;今回ragを構築するにあたり使うソフト&#34;&gt;今回RAGを構築するにあたり使うソフト&lt;/h1&gt;
&lt;p&gt;vector DB: &lt;a href=&#34;https://github.com/qdrant/qdrant&#34;&gt;qdrant&lt;/a&gt;
embedding model: &lt;a href=&#34;https://huggingface.co/BAAI/bge-base-en&#34;&gt;BAAI/bge-base-en&lt;/a&gt;
LLM: &lt;a href=&#34;https://ollama.com/library/phi4&#34;&gt;phi4 14b&lt;/a&gt; on ollama (@ rtx 3060 12g)&lt;/p&gt;
&lt;p&gt;Langchainなどの統合的なライブラリは使わない。なぜなら自由度が低いから。
vector DBでの検索も普通にREST APIでできるので問題なさそう。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Googleapi Gmail Autoreply</title>
      <link>https://blog.ingenboy.com/post/googleapi-gmail-autoreply/</link>
      <pubDate>Sat, 10 May 2025 10:37:14 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/googleapi-gmail-autoreply/</guid>
      <description>&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;受託開発先の方からLLMを使って問い合わせや予約業務の自動化ができないかと聞かれた。
もちろんできますよ、と僕は答えたわけです。
しかし、一回gmailの内容をローカルに持って来ないと始まりませんよね？？
なので、gmailのメールをサーバに持ってくるためにgoogle apiを叩きます。&lt;/p&gt;
&lt;h1 id=&#34;構成&#34;&gt;構成&lt;/h1&gt;
&lt;p&gt;webフロントエンド -&amp;gt; サーバ（アプリ） -&amp;gt; google api&lt;/p&gt;
&lt;h1 id=&#34;google-apiの設定方法&#34;&gt;google apiの設定方法&lt;/h1&gt;
&lt;h2 id=&#34;1-プロジェクト作成&#34;&gt;1. プロジェクト作成&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://console.cloud.google.com/&#34;&gt;https://console.cloud.google.com/&lt;/a&gt; にアクセス&lt;/li&gt;
&lt;li&gt;以下の写真のgoogle cloudロゴの隣にあるボタンをクリック。この画像で言うと、gmail api access（ここから新しいプロジェクトを作る）
&lt;img alt=&#34;google cloudロゴ&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;プロジェクト名（例：gmail-auto-reply）を入力し、「作成」&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2-gmail-api-を有効にする&#34;&gt;2. Gmail API を有効にする&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;google cloudロゴの隣にあるボタンから、先ほど作ったプロジェクトにプロジェクトを変更する&lt;/li&gt;
&lt;li&gt;左側メニュー「APIとサービス」 → 「ライブラリ」を押す&lt;/li&gt;
&lt;li&gt;検索ボックスに Gmail API と入力し、クリック。
&lt;img alt=&#34;これ&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto2.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;enableボタンを押す
&lt;img alt=&#34;enable button&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto3.png&#34;&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-oauth-同意画面を設定する&#34;&gt;3. OAuth 同意画面を設定する&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;左側メニュー「APIとサービス」→「OAuth同意画面」
&lt;img alt=&#34;これ&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto4.png&#34;&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;次のような画面が出てくる。get startedを押す
&lt;img alt=&#34;get started&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto5.png&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;以下の情報を入力する&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ユーザータイプ	外部（基本はこれでOK）
アプリ名	任意（例：Auto Mailer）
サポートメール	自分のGmailでOK
開発者連絡先情報	自分のメールアドレス
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;4-認証情報を作成oauth-20-クライアントid&#34;&gt;4. 認証情報を作成（OAuth 2.0 クライアントID）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;左メニュー「認証情報」→「＋認証情報を作成」→「OAuth クライアントID」
&lt;img alt=&#34;get started&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto6.png&#34;&gt;
&lt;img alt=&#34;get started&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ingenboy.com/images/google-api-tuto/google-api-tuto7.png&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以下を入力する&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;アプリケーションの種類 → 「Web アプリ」&lt;/li&gt;
&lt;li&gt;名前は何でもOK（例：auto-mail-backend）&lt;/li&gt;
&lt;li&gt;「承認済みのリダイレクトURI」に以下を追加：
&lt;ul&gt;
&lt;li&gt;http://localhost:3000/auth/google/callback&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://yourdomain.com/auth/google/callback&#34;&gt;https://yourdomain.com/auth/google/callback&lt;/a&gt; (実際に使うサーバ)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;作成ボタンを押す。クライアントシークレットが表示されるのでめももしくはダウンロード&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;5-スコープを追加必要なら&#34;&gt;5 スコープを追加（必要なら）&lt;/h2&gt;
&lt;p&gt;ここまでで設定が完了。次にやることは以下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>LocalLLM</title>
      <link>https://blog.ingenboy.com/post/localllm/</link>
      <pubDate>Sun, 07 Jul 2024 23:08:04 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/localllm/</guid>
      <description>&lt;h1 id=&#34;何の記事&#34;&gt;何の記事&lt;/h1&gt;
&lt;p&gt;ローカルホストにLLMをインストールし、性能を検証。
またapiを介して利用可能にする方法を検証。
最後に、社内のことを学ばせて、こういう質問が来たらこう答えてねってのを教え込ませる。&lt;/p&gt;
&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;自宅には計算資源がたくさんある。
それをネットワーク越しに使えるということがわかったので、LLM等の重い処理も自宅で動かして、軽量なフロントエンドと連携させる、
みたいなことが非常に簡単にできるということがわかった。
LLMで何をしたいか？？お客さんからの問い合わせに自動で答えるチャットボットを作りたいのよね。
うん、社内の情報とかを学ばせないといけない。その辺のファインチューニングの仕方も知りたい。&lt;/p&gt;
&lt;h1 id=&#34;参考記事&#34;&gt;参考記事&lt;/h1&gt;
&lt;p&gt;[ollamaについて] (&lt;a href=&#34;https://bhrtaym-blog.com/?p=407&#34;&gt;https://bhrtaym-blog.com/?p=407&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;[ローカルLLMをGPUで動かす] (&lt;a href=&#34;https://zenn.dev/giana12th/articles/7fc22c8cbdbb5e&#34;&gt;https://zenn.dev/giana12th/articles/7fc22c8cbdbb5e&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ollama.com/library&#34;&gt;ollama公式サイト&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ollama/ollama&#34;&gt;ollamaのgithub&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;proxmoxで動かすための下準備&#34;&gt;proxmoxで動かすための下準備&lt;/h1&gt;
&lt;p&gt;GPUをパススルー必要がある。
あと、一番大きいモデルでは何倍とメモリが必要なんだっけ？
64GB以上あれば問題ないらしい。のでとりあえずそれをインストールしようと思う。&lt;/p&gt;
&lt;p&gt;あとは、ProxmoxでGPUをパススルーする方法。
あー、「ホストマシンのBIOSにて、VT-x, VT-d を有効にする。(VT-d は PCI Passthrough で必須)」
する必要があるらしい。
しかし、実はCPUの仮想化をした時点でGPUの仮想化もできるようになってたっぽい。&lt;/p&gt;
&lt;p&gt;でした準備は完了した。がメモっておくか&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;proxmoxのコンソールから、add hardware PCIeを選択し、GPUを入れる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nvidia-driverをインストール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nvidia-smiが使えるか確認。認識されているかも確認
ちなみに、ここでcudaのバージョンが出てくるけど、これは対応しているcudaのバージョンを示しているだけで実際にcudaがインストールされたわけではありません。そこを気を付けてください。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuda（ランタイム）をインストール
しかし、これはdocker等で、cudaが入ったコンテナを配ってもらえれば終わる話なので、無視でいいのかな？？ちょっと調べてみよう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;proxmoxのCPUのtypeをhostに変える。これをやらないとavx命令が使えない。これゆえGPUが使われなくなってしまう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ollamaのインストール&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;dockerもある。
&lt;a href=&#34;https://hub.docker.com/r/ollama/ollama&#34;&gt;ollama on docker&lt;/a&gt;
これを参考にnvidia-container-toolkitをインストールする感じか。&lt;/p&gt;
&lt;h1 id=&#34;docker-install後の苦戦&#34;&gt;docker install後の苦戦&lt;/h1&gt;
&lt;p&gt;docker上のollama上で、llama3を動かすことには成功したんですよ。しかし、どうやらGPUでは動かせていいない。これはなんでかわかりました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;time=2024-07-19T00:29:37.242Z level=WARN source=gpu.go:225 msg=&amp;#34;CPU does not have minimum vector extensions, GPU inference disabled&amp;#34; required=avx detected=&amp;#34;no vector extensions&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;CPUがavx命令をサポートしていないとGPUにオフロードされないみたいですね。
ほかのところでも同じことが言われていました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; GPU support requires the AVX instruction set, check your CPU model.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;つまり、ProxmoxでどうにかしてavxをOnにする必要があるということです。
これのやり方ですが、cpuのtypeをホストにしたら解決するようです。ってことで変えて再起動します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
