.h5ファイルって何?AIのセーブデータ?新人エンジニアのためのHDF5超入門

こんにちは。ゆうせいです。

機械学習のコードを読んだり書いたりしていると、model.save('my_model.h5') のような記述や、フォルダ内に存在する .h5 という見慣れない拡張子のファイル。あなたも一度は目にしたことがあるのではないでしょうか?

「これは一体、何者なんだろう?」「ダブルクリックしても開けないし、謎だな…」

そう感じたかもしれませんね。

この .h5 ファイル、ただのデータ保存ファイルだと侮ってはいけません!実はこれ、科学技術計算の世界で非常にパワフルな「魔法の箱」なんです。

今日は、この .h5 ファイルの正体を、一緒に解き明かしていきましょう!


.h5ファイルの正体は「デジタル整理棚」

まず、このファイルの正式名称からお話ししますね。

.h5 というのは、HDF5 (Hierarchical Data Format 5) というデータフォーマットの拡張子です。

…といっても、名前だけではピンとこないですよね。

例えるなら、HDF5は「高性能なデジタルの整理棚」のようなものです。

普通のファイル、例えばCSVファイルが「表が印刷された一枚の紙」だとします。

それに対して、HDF5ファイルは、引き出しや仕切りがたくさんついた、大きな「整理棚」そのものなんです。

  • グループ (Group):整理棚の「引き出し」に相当します。カテゴリーごとにデータを分けることができます。さらに、引き出しの中に小さな「仕切り箱(サブグループ)」を作って、もっと細かく整理することも可能です。
  • データセット (Dataset):引き出しや仕切り箱の中にしまう「書類」です。これが実際のデータ本体で、巨大な数値の配列(NumPy配列など)やテーブルを格納できます。
  • 属性 (Attribute):整理棚の引き出しや、中の書類にペタッと貼っておける「付箋」のようなものです。「このデータはバージョン1.0です」「作成日は2025年10月7日です」といったメモ(メタデータ)を、好きな場所に書き残せます。

つまり、HDF5は、関連する様々な種類のデータを、フォルダのような階層構造で整理しながら、一つのファイルにまとめて格納できる、非常に優れたフォーマットなのです!


なぜ機械学習でよく使われるの?

では、なぜこの「デジタル整理棚」が、特に機械学習の世界で重宝されるのでしょうか?

考えてみてください。あなたが訓練したAIモデルを「セーブ」したいとき、何を残す必要があるでしょう?

  1. モデルの構造(設計図):どんな層を、どんな順番で組み合わせたかという情報。
  2. 学習済みの重み(知識):膨大な計算の末に得られた、賢さの源となるパラメータの塊。
  3. オプティマイザの状態:もし追加で学習を再開したい場合に備えて、その時点での設定を記憶しておく必要があります。

これらは全部、種類が違うデータですよね。

普通のファイル形式だと、「設計図はJSONファイル」「重みはバイナリファイル」…というように、複数のファイルをバラバラに管理する必要があって大変です。

そこでHDF5の出番です!

「設計図」用の引き出し、「重み」用の引き出し、「オプティマイザ」用の引き出しを用意して、関連データ一式をまるごと一つの .h5 ファイルにポン!と収納できるのです。

このオールインワンの手軽さから、Kerasなどの多くの機械学習フレームワークで、モデルの保存形式として採用されてきたというわけですね。


メリットとデメリットを知っておこう

この便利なHDF5ですが、もちろん万能ではありません。良い点と、少し注意が必要な点をしっかり理解しておきましょう。

メリット

  • 自己完結で管理が楽先ほど説明したように、様々な種類のデータを一つのファイルにまとめられるため、管理が非常に楽です。このファイル一つを渡せば、モデルの復元に必要なものがすべて揃います。
  • 巨大データに強いHDF5は、テラバイト級の巨大なデータセットを扱うために設計されています。ファイル全体をメモリに読み込むことなく、必要な部分だけをスライスして高速に読み書きできるので、メモリが少ないマシンでも効率的に作業できます。
  • 互換性が高いPython、C++、Java、MATLABなど、様々なプログラミング言語でサポートされています。ある言語で作成した .h5 ファイルを、別の言語で問題なく読み込めるのは大きな強みです。

デメリット

  • 専用の道具が必要CSVファイルのように、普通のテキストエディタで気軽に中身を見ることはできません。Pythonであれば h5py のような専用のライブラリを使って、プログラム経由でアクセスする必要があります。
  • シンプルなデータには大げさかもただの小さな表を保存したいだけなのに、わざわざ「高性能な整理棚」を持ち出すのは少し大げさですよね。そのような場合は、誰でもExcelなどで開けるCSVファイルの方が、シンプルで分かりやすいでしょう。
  • 新しい標準の登場TensorFlowの世界では、近年 .h5 形式よりも、ディレクトリ(フォルダ)ベースの SavedModel 形式が推奨される傾向にあります。.h5 が時代遅れというわけでは決してありませんが、最新の動向として知っておくと良いでしょう。

Pythonで中身を覗いてみよう

百聞は一見に如かず。h5py というライブラリを使って、実際にPythonで .h5 ファイルを作って、中身を覗いてみましょう。

import h5py
import numpy as np

# --- .h5ファイルを作成してデータを書き込んでみます ---
# 'w'は書き込み (write) モードを意味します
with h5py.File('my_digital_shelf.h5', 'w') as f:
    # 'model_weights' という名前の「引き出し」を作成
    grp = f.create_group('model_weights')

    # 引き出しの中に「書類」として2つのデータセットを保存
    grp.create_dataset('layer1', data=np.random.rand(10, 5))
    grp.create_dataset('layer2', data=np.random.rand(5, 2))

    # 整理棚全体に「付箋」でメモを残します
    f.attrs['author'] = 'Yusei'
    f.attrs['version'] = 1.2

print('.h5ファイルが作成されました!')

# --- 今度は作成したファイルからデータを読み込んでみます ---
# 'r'は読み込み (read) モードです
with h5py.File('my_digital_shelf.h5', 'r') as f:
    # 'model_weights'の引き出しの中身一覧を表示
    print('引き出しの中身:', list(f['model_weights'].keys()))

    # 'layer1'の書類データを読み込み
    layer1_weights = f['model_weights/layer1'][:]
    print('layer1の書類の形:', layer1_weights.shape)

    # 付箋の内容を確認
    author = f.attrs['author']
    version = f.attrs['version']
    print(f'作成者: {author}, バージョン: {version}')

このコードを実行すると、.h5 ファイルが作られ、その構造と中身をプログラムから確認できるはずです。簡単でしょう?


今後の学習の指針

.h5 ファイルの正体が「デジタル整理棚」であることが、少しイメージできたでしょうか?

この知識をさらに深めるために、次に何を学ぶべきか指針を示しますね。

  1. h5pyライブラリを深掘りするまずは、今回使った h5py の公式ドキュメントを読んでみてください。データの圧縮方法や、巨大なデータを少しずつ読み込む方法(スライシング)など、より高度な使い方がたくさん載っています。
  2. 他のデータフォーマットも知る.h5 は強力ですが、万能薬ではありません。それぞれの得意分野を理解するために、他の有名なデータフォーマットも学んでみましょう。
    • CSV: シンプルな表形式データなら今でも最強です。
    • JSON: Web APIなどで使われる、人間にも読みやすい階層構造データです。
    • Parquet: 大規模データ分析の世界でよく使われる、列指向の高性能フォーマットです。
  3. フレームワークの標準保存形式を調べるあなたが今使っている機械学習フレームワーク(TensorFlow, PyTorchなど)が、モデル保存のためにどの形式を「推奨」しているか調べてみましょう。フレームワークの思想を理解する良いきっかけになりますよ。

.h5 ファイルは、一見とっつきにくいかもしれませんが、その正体と使い方を知れば、あなたのデータ管理能力を格段に上げてくれる、頼もしい味方になります。

恐れずに、どんどん使って、仲良くなってくださいね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。