Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
Search
世良泰明
October 06, 2026
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
2026/10/6
Kubernetes Novice Tokyo #42
世良泰明
October 06, 2026
More Decks by 世良泰明
See All by 世良泰明
自分で立ててみるLLMサービス
y_sera15
0
200
ホームラボ紹介
y_sera15
0
340
Serendie Design Systemを使ってWebアプリケーションを開発してみた
y_sera15
0
180
Kubernetesの公式ドキュメントを翻訳してみた
y_sera15
0
93
ラズパイ奮闘記 その1
y_sera15
0
86
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
740
EKS勉強会
y_sera15
1
200
自宅k8s構築日記 冬休み編
y_sera15
0
340
自宅k8sクラスター構築日記
y_sera15
0
300
Other Decks in Technology
See All in Technology
IBC 2026 動画技術関連レポート / IBC 2026 Report
cyberagentdevelopers
PRO
2
450
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
720
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
630
会社説明資料_最新版
demaecan
0
32k
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
530
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
600
公共システムAdventCalendar2026
toru_kubota
0
290
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
200
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
190
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
210
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
470
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
220
Featured
See All Featured
Fireside Chat
paigeccino
43
4.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
820
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
Skip the Path - Find Your Career Trail
mkilby
1
290
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
800
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
Embracing the Ebb and Flow
colly
88
5.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
380
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Abbi's Birthday
coloredviolet
4
11k
Un-Boring Meetings
codingconduct
0
490
Transcript
Jetson Orin Nanoとk3sとローカルLLMで 音声文字起こしシステム作ってみた 2026/10/6 Kubernetes Novice Tokyo #42 世良泰明
自己紹介 名前: 世良泰明(せら やすあき) 職業: インフラエンジニア(?) k8sを使って開発するお仕事 某製造業@横浜 社会人6年目 趣味:
囲碁, 散歩, etc... twitter: @y_sera15 自宅K8sクラスター Intel NUC 3台 + Synology NAS
今日の話 • Jetson Orin Nano + k3s + LLMで音声認識アプリを作った話 文字起こし
ログ システム構成 Generic Device Plugin 音声入力 アプリ lamma.cpp server .wav転送 文字起こし 結果 k3s /dev/snd/* USBマイク Jetson Linux + Jetpack7.2 Jetson Orin Nano hostPath Gemma4 E2B
構成要素 Jetson Orin Nano k3s • Nvidia製のシングルボードコンピュータ • エッジ向け軽量Kubernetes •
GPUと8GBのユニファイドメモリ • Ubuntuベースの専用OSで稼働 • シングルバイナリ + コンテナで構成 Gemma4 llama.cpp • LLMを動かすための軽量な推論エンジン • Google製LLMのモデル • 音声 → テキストも処理可能 • 今回は軽量なgemma4-E2B-it-qat-q4_0を使用
USBマイクの読み込み USBマイクはホストのファイルシステムで/dev/snd/*として認識 podに割り当てるには工夫が必要 1. コンテナに強い特権を与える 2. Device Pluginの仕組みを使う → Generic
Device Pluginを使用
Generic Device Plugin Linuxの汎用的なデバイスをKubernetesのPodにマウントする仕組みを提供するOSS - シリアルデバイス - FUSEデバイス - ビデオカメラ
などなど インストールコマンド kubectl apply -f \ https://raw.githubusercontent.com/squat/generic-device-plugin/main/manifests/generic-device-plugin.yaml
Generic Device Plugin Linuxの汎用的なデバイスをKubernetesのPodにマウントする仕組みを提供するOSS 許可するデバイスのパスとカテゴリを引数で指定 generic-device-pluginの引数 containers: - image: squat/generic-device-plugin
args: - --device -| name: serial groups: - paths: - path: /dev/ttyUSB* ... - --device -| name: audio groups: - count: 10 paths: - path: /dev/snd ... アプリのマニフェスト apiVersion: apps/v1 kind: Deployment metadata: name: audio-app spec: ... template: ... spec: containers: - image: audio-app:latest resources: limits: devic.es/audio: 1
Device Plugin Kubernetesがデバイスを管理する仕組み DevicePluginのpodが特権を持って デバイスをkubeletに広報 ワークロードのpodによる要求に応じて 必要なデバイスだけランタイムが割り当て 図の引用元 https://developers.redhat.com/articles/2025/11/12/newmicroshift-4-20-generic-device-plugin# 公式ドキュメント(Englishのみ)
https://kubernetes.io/docs/concepts/extendkubernetes/compute-storage-net/device-plugins/
ハマりポイント USBデバイスは、マウントするたびに/dev/のパスが変わる パス: /dev/snd/pcmCXDYp 最初決め打ちしていたが、再起動でマイクが迷子に → 一通りデバイスをサーチしたのち、 デバイス情報が “USB Microphone”となっているものを選択
def find_audio_device(pa): for i in range(pa.get_device_count()): info = pa.get_device_info_by_index(i) if ( info["maxInputChannels"] > 0 and "USB Microphone" in info["name"] ): return i raise RuntimeError("USB Microphone not found")
今日の話 • Jetson Orin Nano + k3s + LLMで音声認識アプリを作った話 文字起こし
ログ システム構成 Generic Device Plugin 音声入力 アプリ lamma.cpp server .wav転送 文字起こし 結果 k3s /dev/snd/* USBマイク Jetson Linux + Jetpack7.2 Jetson Orin Nano hostPath Gemma4 E2B
LLMのホスト LLMの処理はGPUを使いたい - 昨今だとDRAとかあるけど、GPU分割するほどリッチな環境じゃない - nvidia-device-pluginとかあるけど, いらないもの入れたくない... runtimeClassNameでNvidiaを指定 → k3sはnvidiaのランタイムを見つけると
自動でnvidia runtimeClassを作成 apiVersion: apps/v1 kind: Deployment metadata: name: gemma4-e2b spec: ... template: ... spec: runtimeClassName: nvidia containers: - image: ghcr.io/ggml-org/llama.cpp:server-cuda13 ...
ハマりポイント cudaのバージョン差異 フォーラムリンク 起動時の互換性チェックで失敗 https://forums.developer.nvidia.com/t/cuda-13-2-1-runtimeimage-cant-run-on-r39-2-sample-rootfs-for-orinnano/372683/19 - Jetson OS(Jetpack7.2)のバージョン(最新): 13.2 -
llama.cpp cuda版のイメージ: 13.3 → 公式フォーラム 「ドライバの許可リストミスってるので、バージョン無視で対応可(意訳)」 ⇨ 環境変数: NVIDIA_DISABLE_REQUIRE=true で無事起動 マルチモーダル(音声・画像など)な入力対応 - マルチモーダルではメインのggufファイルだけでなくmmproj.ggufを読み込む必要あり
その他細かい工夫点 メモリ領域との戦い llama.cpp + Gemma4が大きく、 しばらくするとOOMを起こす → パラメータを細かく調整しメモリ削減 ギリギリだけど継続的に稼働するように #
Thinkingしない LLAMA_ARG_REASONING=off # キャッシュ周りをオフ LLAMA_ARG_CACHE_PROMPT="false" LLAMA_ARG_CACHE_RAM="0" LLAMA_ARG_CACHE_IDLE_SLOTS="false" # キャッシュの量子化 LLAMA_ARG_CACHE_TYPE_K="q8_0" LLAMA_ARG_CACHE_TYPE_V="q8_0" # 並列をしない LLAMA_ARG_N_PARALLEL="1” # コンテキストサイズ短めに LLAMA_ARG_CTX_SIZE="2048”
まとめ Jetson Orin Nano + k3sをベースに、文字起こしシステムを作った。 - USBデバイスをpodにマウント -> Generic
Device Plugin - llama.cppでLLMをホスト -> Nvidia Runtime - その他細つまづきポイントを共有 ただ最近、litert-lmというgoogle謹製の推論エンジンを発見 まだまだメモリが厳しい(100MiB程度の空きしかない)ので、次はこれをトライ
発表後 FAQ Q: Device PluginではなくDRAを使うことは 可能なのでしょうか? (最近流行っている印象なので無邪気な質問です) A. 結論: Jetson
Orin Nanoでは、現在は不可のようです 現在サポートされているもの: dGPU Jetson Orin Nanoの構成: L4T(Tegraデバイス) これらは全く異なるスタックであり、 大幅なアーキテクチャ変更が必要になるとのこと dGPU, L4T, Tegraが何かは私はよく分かってないですが... https://github.com/kubernetes-sigs/dradriver-nvidia-gpu/discussions/730