【解決済み】QNAP AI Core & Google Coral USB - トグルが「無効」のまま動かない/Dockerの非表示修正

私はしばらく自分のマシンでCoral AI Accelerator(コーラルAIアクセラレータ)を動かそうとしていましたが、ようやく時間が取れたので修正に挑戦しました。結果は成功です!以下にその手順をまとめました。

私の環境:

NAS: TS-873(または同等のx86/AMDモデル)
QTSバージョン: 5.2.9.3410
アプリバージョン: Multimedia Console 2.10.0, Container Station 3.1.2.1742
ハードウェア: Google Coral Edge TPU(USB)

症状:
Google Coral Edge TPUを接続し、Multimedia Consoleを開いてAI Enginesに移動し、「QNAP AI Core」を有効にしようとします。一瞬「Starting」と表示されますが、すぐに「Disabled」に戻ります。Web UIにはエラーメッセージは表示されず、黙って失敗します。

SSHや隠しログを調べた結果、原因はハードウェア自体ではなく、QNAPのアーキテクチャ内にある隠れたDockerデーモンの破損でした。

根本原因: 隠れたDockerデーモン

QNAPは実際には2つのDockerデーモンを動かしています。Container Station(docker)で見えるものと、QNAP独自アプリ専用の完全に隠れたもの(system-docker)です。

NASで強制再起動やアプリの移行、電源スパイクが発生した場合、system-dockerデーモンの仮想ハードディスクが破損している可能性があります。AI CoreのスクリプトはQuMagie AIコンテナを起動しようとしますが、破損した隠しドライブに当たり、バックグラウンドで即座にクラッシュします。

ここでは破損した隠しデータベースを消去し、AI Coreをゼロから再構築する方法を説明します。

:warning: 重要警告: 顔データのバックアップを必ず行ってください :warning:

この手順を省略すると、AI解析を最初からやり直すことになります。隠しDockerストレージを消去すると、AI Coreの顔認識ベクトルキャッシュが削除されます。QuMagieデータベースを事前にバックアップしないと、これまでに名付けた顔やカスタムタグがすべて失われ、NASは写真ライブラリ全体を最初から再インデックスする必要があります。

(免責事項: 私自身はこのバックアップ手順を実行せずに作業してしまい、顔タグを失いました。復元の挙動は環境によって異なる場合がありますが、以下がQNAPがデータベースを保存している標準パスです。)

1. QuMagieデータベースをPublicフォルダにバックアップする:
NASにSSHで接続し、以下のコマンドで顔データとサムネイルをバックアップフォルダに安全にコピーします。

mkdir -p /share/Public/qumagie_backup
cp -avr /share/CACHEDEV1_DATA/.system/data/s01 /share/Public/qumagie_backup/s01_db
cp -avr /share/CACHEDEV1_DATA/.system/facedata /share/Public/qumagie_backup/facedata

(復元が必要な場合は、AI Coreが稼働した後に.systemフォルダへコピーし直しますが、やはり環境によって挙動が異なる場合があります。)

ステップバイステップ ターミナル修正手順

以下のパスはContainer Station用にCACHEDEV1_DATAを使用しています。アプリが他のボリュームにインストールされている場合は番号を変更してください。

2. 隠れたデーモンを停止し、ゴーストロックファイルを削除:
rm -f /var/run/system-docker.sock
rm -f /var/run/system-docker.pid
killall -9 system-docker 2>/dev/null

3. 破損した隠しDockerストレージを消去:
注意: このコマンドは数千の小さなレイヤーファイルを削除するため、数分間ハングする場合があります。完了するまで待ってください。

rm -rf /share/CACHEDEV1_DATA/.qpkg/container-station/system-docker/*

4. Container Stationを再起動してコア構造を再構築:

/share/CACHEDEV1_DATA/.qpkg/container-station/container-station.sh restart

5. 欠落したシンボリックリンクフォルダを再作成:
ストレージを消去したため、デーモンがoverlay2ストレージドライバに必要な特定ディレクトリを再構築しない場合があります。インストーラーがパニックにならないよう手動で作成します。

mkdir -p /share/CACHEDEV1_DATA/.qpkg/container-station/system-docker/tmp
chmod 777 /share/CACHEDEV1_DATA/.qpkg/container-station/system-docker/tmp
mkdir -p /share/CACHEDEV1_DATA/.qpkg/container-station/system-docker/overlay2/l

6. 中途半端に展開されたイメージキャッシュをクリア:

docker -H unix:///var/run/system-docker.sock system prune -a -f

7. AI Coreを再インストール:
これで隠れたDockerデーモンが完全に正常な状態でクリーンになりました。

QNAPのWeb UIでApp Centerを開きます。

QNAP AI Coreを探してアンインストールし、すぐに再インストールします。

これにより、インストーラーが重いAI/Ubuntuイメージをクリーンなsystem-dockerデーモンに正しく展開できます。

再インストールが完了したら、Multimedia Console > AI Enginesに戻り、QNAP AI CoreスイッチをONにします。すぐに「Started」に切り替わるはずです。

追加トラブルシューティング: USB電源の電圧降下(ブラウンアウト)

上記のソフトウェア修正を完了してもスイッチが無効に戻ったり、Coral Edge TPUがMultimedia Consoleに全く表示されない場合、ハードウェアの電力制限が原因かもしれません。

Google Coral Edge TPUは初期化の瞬間に大きな電力スパイクが発生します。多くの古いQNAP NASの内蔵USBポートは十分な電力を素早く供給できず、Coralが即座に電圧降下(ブラウンアウト)して切断され、AIソフトウェアがクラッシュします。

ハードウェア対策: Coralを電源付きUSB 3.0ハブ(コンセントから電源を取るタイプ)に接続し、そのハブをNASに接続してください。これによりハブが初期化時のスパイクを吸収し、Coralに安定した接続を供給できます。

お役に立てば幸いです。私のAI認識は約100万枚の写真で10日ほどかかりますが、それでも他の方法よりはるかに速いです!

共有していただき、誠にありがとうございます!この情報は私たちにとって非常に参考になります。ご指摘いただいた状況については、社内チームでも調査し、詳細を確認いたします。ありがとうございます!

問題ありません。QuMagieのフロントエンドから顔データを確実にバックアップする方法も大変ありがたいです。

貴重なご提案を誠にありがとうございます。ご意見を参考にし、今後の最適化および改善の計画を進めてまいります。

AI CoreとQuMagieを再初期化する際の処理時間を節約するための簡単なフォローアップ・ヒントです。

データベースを再構築したりこれらのアプリをリセットした場合、Multimedia Consoleがシステムの隠しフォルダ用の組み込み除外ルールを忘れてしまうことがあります。そのため、インデクサーがQNAPの隠し .@__thumb.thumblocal キャッシュフォルダまでスキャンを始めてしまいます。

本来の写真だけをスキャンする代わりに、Coral TPUが大量の小さな冗長サムネイル画像に対して顔認識を実行し、貴重な時間と処理能力を無駄にしてしまいます。

新規スキャンを開始する前に不要なキャッシュを一掃し、TPUが本来の高解像度ファイルのみに集中できるようにする方法は以下の通りです:

1. SSHで隠しキャッシュを削除する NASにSSHで接続し、写真共有のルートディレクトリ(例:cd /share/Multimedia)に移動します。以下のコマンドを実行して、実際の.jpg/.movファイルには手を付けずに隠しサムネイルキャッシュのみを安全に検索・削除します:

find . -type d \( -name ".@__thumb" -o -name ".thumblocal" \) -exec rm -rf {} +

2. QNAPキャッシュをクリアする QNAPのWeb UIで Multimedia ConsoleThumbnail Generation に進み、Remove All Thumbnails をクリックします。

3. クリーンアップしたディレクトリを再インデックス Multimedia ConsoleのIndexingタブに移動します。(注:スキャンが実行中または一時停止中の場合、ボタンが非表示になることがあります。完了を待つか、アプリを再起動してください)。Re-indexボタンをクリックします。

(ボーナスヒント:グローバルインデクサーがアプリキャッシュファイルに無駄な時間をかけないように、QNAPのコントロールパネル共有フォルダー > アプリデータ共有のプロパティを編集で、マルチメディアフォルダーフラグのチェックを外し、インデクサーが完全に無視するようにしましょう。)

4. 再起動して実行 NASをフル再起動して、バックグラウンドでロックされたデータベースタスクをクリアします。再起動後、AI Coreをオンにしてください。これでCoral TPUがはるかに効率的に動作するようになります!

QTS BusyBoxのfind-execをサポートしていません(少なくとも、私が最後に確認したときはそうでした)。そのため、GNU findのような、より高機能なバージョンをインストールする必要があります。Entwareで利用可能です。:nerd_face: