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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
世良泰明
October 06, 2026
Technology
77
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
110
ホームラボ紹介
y_sera15
0
310
Serendie Design Systemを使ってWebアプリケーションを開発してみた
y_sera15
0
170
Kubernetesの公式ドキュメントを翻訳してみた
y_sera15
0
82
ラズパイ奮闘記 その1
y_sera15
0
83
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
720
EKS勉強会
y_sera15
1
190
自宅k8s構築日記 冬休み編
y_sera15
0
330
自宅k8sクラスター構築日記
y_sera15
0
280
Other Decks in Technology
See All in Technology
メルペイ 会計システム概要と歴史
mewuto
0
150
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
220
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
140
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
220
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
160
調査タスクをAIと乗り切る 〜過去の調査をナレッジ化し 調査手順をスキルにする〜
mot_techtalk
1
120
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
560
Futexes the good, the bad, the ugly
ennael
PRO
0
120
並行性の問題を防げ!実践トランザクション入門
occhi
0
270
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
280
IR Today: Theory, Practice, and Agents
dtunkelang
0
350
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
190
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
440
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
エンジニアに許された特別な時間の終わり
watany
109
250k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to train your dragon (web standard)
notwaldorf
96
6.8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
Large-scale JavaScript Application Architecture
addyosmani
515
110k
We Have a Design System, Now What?
morganepeng
55
8.4k
The agentic SEO stack - context over prompts
schlessera
0
960
Mind Mapping
helmedeiros
1
390
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