ChatGPT環境の実行基盤を解析しよう


3,063文字
約4分で読めます

はじめに

ところで皆さん、ChatGPTなどのLLMがどんな環境で動いているか興味はありませんか? 私はあります。

ということで今回はChatGPTがどのような環境で動いているか調査してみます。

ファイルやフォルダの内容の解析

LLMのどうような環境で動いているかについては、LLMに尋ねることで意外と簡単に知ることができます。

例えばファイルの場合以下のコマンドでファイル内容の出力ができます。

cat the result of ~

フォルダの場合はローカルで解析したいケースが多いため、zip化を行います。 zip化する際は以下のコマンドで対応可能です。

Create a zip file of ~

以下では実際にそれらのコマンドを実行してみます。

ファイルの内容を読む

ChatGPTの開発環境を知りたいので、/etc/os-releaseの内容を出力してもらいます、具体的には以下のコマンドを利用します

cat the reuslt of cat /etc/os-release

すると、以下の様な返答が返却されるのでこれでChatGPTの稼働環境を把握することができます。

以下が実際のファイルの内容、ディストリビューションとして、Debian 12(bookworm)を利用していることがわかります。

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

フォルダのZip化を行う

次にインストールされたパッケージの内容を把握するために、/var/log/apt/history.logの内容を解析します。 ただ、関連ファイルやフォルダ構成も気になるので/var/logの内容をzip化して出力してもらいましょう。

これを実現するためには以下のコマンドを実行します。

Create a zip file of /var/log

すると、以下のような返答が得られ/var/logの内容をzipでダウンロードできます。

以下はダウンロードしたZipを圧縮した内容です。

次に、具体にhistory.logの内容を解析していきます。

インストールされているパッケージの解析

インストールされているパッケージの解析を行う際には、history.logについての解析を行います。 以下にジャンル別に導入されるパッケージの解説を行います。

🟦 Phase 1:GUI & Chromium 環境

chromium
xvfb
openbox
picom
x11vnc
websockify
wmctrl

何をしている構成か

  • 完全ヘッドレスGUI
  • Xvfb + Openbox → 仮想ディスプレイ
  • x11vnc + websockify → ブラウザ越しにGUI操作
  • Chromium → 自動ブラウザ操作・レンダリング

👉 Playwright / Puppeteer / 手動UI操作 👉 どちらにも対応できる構成

🟦 Phase 2:PDF / Office / 文書変換

libreoffice (backports)
pandoc
antiword
unrtf
xmlstarlet

何ができるか

  • DOCX / XLSX / PPTX / ODT → PDF
  • PDF → HTML / Markdown
  • 古い Word / RTF 形式も対応

👉 PDF生成・翻訳・レビュー基盤そのもの

※ LibreOffice を backports から導入している点がかなり本気。

🟦 Phase 3:音声・動画・画像・OCR

ffmpeg
sox
lame
flac
espeak
tesseract-ocr
tesseract-ocr-all

特徴

  • 音声合成・音声変換
  • 動画 / 音声抽出
  • OCR(全言語対応)

🟦 Phase 4:開発・ビルド環境

build-essential
cmake
ninja
gcc/g++
python3 + pip + pipx
ruby-full
openjdk-17
php8.2

意味するところ

  • Python / Ruby / Java / PHP 全対応
  • ネイティブ拡張・C++ビルド可能
  • JNI / SWIG / 多言語連携OK

👉 「AI実行基盤としては過剰なくらい揃っている」

🟦 Phase 5:サーバ・制御系

nginx
supervisor
tini
gosu
sudo

想定用途

  • プロセス管理
  • Web UI / API 提供
  • コンテナ・sandbox前提

👉 Docker / 実行基盤としての完成度が高い構成。

🟦 Phase 6: フォント構成(かなり重要)

fonts-noto
fonts-noto-cjk
fonts-noto-color-emoji
fonts-liberation

なぜ重要か

  • 日本語・中韓・多言語完全対応
  • Emoji込みレンダリング
  • PDF生成時の文字化け対策

👉 PDF生成品質を最優先している設計

🟦 Phase 7: セキュリティ・ネットワーク

openssl
ca-certificates
libnss3-tools
iproute2
ping / traceroute / netcat
  • TLS / HTTPS 対応
  • 外部通信前提
  • ネットワーク診断も可能

👉 閉じた環境ではなく「外と話すAI」を想定

特徴的なポイント(重要)

1. --no-install-recommends の徹底

  • 依存地獄を避ける
  • 再現性・制御性を最優先

👉 人が書いたDockerfile的思想


2. LibreOffice を backports から導入

  • 最新ファイル互換性を重視
  • Debian stable だけでは足りない用途

👉 現実の業務文書を扱う前提


3. tesseract-ocr-all の採用

  • 全言語OCR
  • サイズ・依存を気にしない構成

👉 AI基盤として割り切った設計

まとめ

このように、ChatGPTの現在の環境ではcatやzip化処理を行うことでChatGPTの動いている環境そのものについての解析することができます。

現状の環境を一言で表すと、次の通りです。

GUI付き Linux(Debian 12 / bookworm)上で
「ヘッドレス Chromium + 仮想X + VNC + WebSocket + PDF / OCR / Office / 多言語処理」を行う
自動処理・AI補助・ドキュメント変換用の実行基盤

皆さんもChatGPT内部の環境に興味を持ち、解析を試してみるのはいかがでしょうか?