search
  1. モデルのファイルとファインチューニング|チェックポイント

モデルのファイルとファインチューニング|チェックポイント

編集部 読了 約6分

  • 画像生成AIのチェックポイントって何?
  • モデルのファイルを替えると、なぜ画像が変わるのか知りたい
  • ファインチューニングで何が変わるのかを知りたい

画像生成AIでは、モデル(学習でできた、画像を作る仕組み)のファイルを替えるだけで、同じプロンプトでも違う画像が出ます。

しかし、ファイルに何が入っていて、なぜ画像が変わるのかは、ファイルを見ただけでは分かりません。

この記事では、チェックポイントとファインチューニングを解説します。2つのモデルの作り比べと、ファイルの種類に safetensors を選ぶ理由も分かります。

モデルのファイルの中身は、計算に使う数値(重み)です。この数値を学習し直すと、得意な画像の違うモデルができます。

チェックポイントとは

すべての重みを1つのファイルにまとめた保存の形と、部品ごとのフォルダに分けた保存の形を並べた図
1つのファイルの形と、部品ごとのフォルダの形。どちらも中身は学習済みの重み

チェックポイントとは、学習済みのモデルの重みをまとめたファイルのことです。重みは、モデルの中で計算に使う数値で、学習によって決まります。

1つのファイルには、モデルの部品の重みがすべて入っています。たとえば、画像を作る中心の部分(U-Net や Transformer)の重みと、プロンプトを数値に変えるテキストエンコーダの重みです。

この1つのファイルにまとめた保存の形は、画像生成AIを動かすソフトの ComfyUI や Automatic1111 で扱いやすくなっています。

一方、Python(プログラムの言語)で画像生成AIを動かす道具の Diffusers の保存の形は、同じ重みを部品ごとのフォルダに分けたものです。

チェックポイントの語は、学習のしかたや段階の違う重みを1つずつ指すときにも使われます。たとえば Stable Diffusion の v1 では、6つのチェックポイントが公開されています。

ファインチューニングとは

学習済みのモデルを学習し直して派生のモデルができる流れを、Stable Diffusion の v1 の例で表した図
学習済みのモデルを追加のデータで学習し直すと、派生のモデルができる

違う重みのファイルを作る方法の1つが、ファインチューニングです。ファインチューニングとは、学習済みのモデルを、追加のデータで学習し直すことです。

日本語の解説の記事では、学習済みのモデルにあとから学ばせる方法をまとめて、追加学習と呼びます。ファインチューニングは、追加学習のうち、モデルの重みの全体か大部分を学習し直す方法です。

学習済みのモデルから始めるので、ゼロから学習するより短い時間で済みます。

たとえば Stable Diffusion 1.5 は、v1.2 のチェックポイントの重みから学習を始めたモデルです。

学習し直しに使ったのは、LAION の画像から選んだ組(laion-aesthetics v2 5+)です。

さらに Stable Diffusion 1.5 から始めて、インペイント(画像の一部を作り直すこと)のための学習をしたモデルもあります。

このように、あるモデルをもとに作られたモデルが、派生のモデルです。

ファインチューニングでは全体の重みを学習し直すので、できるファイルもモデル全体の大きさになります。Stable Diffusion では、たいてい数GB です。

派生のモデルで得意な画像が変わる

同じプロンプトと同じシードで、Stable Diffusion 1.5 と DreamShaper 8 で作った4枚。DreamShaper 8 は、整ったレンダリングに近い見え方
同じプロンプト・同じシードでも、モデルを替えると家の形と見え方が変わった

派生のモデルは、もとのモデルと同じプロンプトでも、違う画像を作ります。重みが違うためです。

派生のモデルは、学習し直したデータによって、得意な画像の種類や見た目が違います。また、学習し直すほかに、複数のモデルを混ぜて作られることもあります。

上の画像は、同じプロンプトと同じシード(初めのノイズを決める数)で、Stable Diffusion 1.5 と DreamShaper 8 を比べた4枚です。

DreamShaper 8 は、Stable Diffusion 1.5 をもとに作られた派生のモデルの1つです。

この試しでは、どちらも白い壁の2階建ての家になりましたが、形と構図は違いました。

DreamShaper 8 では線のそろった白い箱の形の家が写り、Stable Diffusion 1.5 より整ったレンダリングの画像に近い見え方でした。

同じシードでも、モデルを替えると家の形から変わったわけです。

チェックポイントのファイルの種類とsafetensors

ckpt と safetensors の、保存の仕組みと安全の違いを並べた表
ckpt は pickle で保存した種類。読み込む前に safetensors かどうかを見る

派生のモデルを使うときは、そのチェックポイントのファイルを手に入れて読み込みます。このとき見ておきたいのが、ファイルの種類です。

ファイルの種類には、safetensors と ckpt があります。ファイル名の最後が「.safetensors」か「.ckpt」かで、見分けられます。

ckpt は、Python の pickle という仕組みで重みを保存したファイルで、古いモデルに多い種類です。

pickle で保存したファイルは、悪意のあるコードを動かすのに使われるおそれがあります。

そのため Diffusers の説明では、safetensors のファイルを使うか、重みを safetensors に変えることを勧めています。

safetensors は、pickle に代わって、重みを安全に保存するために作られた種類です。同じモデルに両方のファイルがあるときは、safetensors を選ぶのが安全です。

チェックポイントの中身と種類を知ってモデルのファイルを安全に使おう

チェックポイント・ファインチューニング・派生のモデル・ファイルの種類の4つを、1つずつ並べた表
チェックポイント・ファインチューニング・派生のモデル・ファイルの種類のまとめ

モデルのファイルを替えると、計算に使う重みが替わり、画像も変わります。この記事で解説したことは、次の4つです。

  • チェックポイントは、学習済みのモデルの重みをまとめたファイル
  • ファインチューニングは、学習済みのモデルを追加のデータで学習し直す追加学習の方法
  • 派生のモデルは、同じプロンプトでも、もとのモデルと違う画像を作る
  • ファイルは、pickle を使う ckpt より safetensors を選ぶ

モデルのファイルを使うときは、ファイルが safetensors かどうかを確かめてみてください。

あわせて読みたい

会員登録(無料)

記事やテーマのお気に入り・学習履歴・フォローが使えます。

この記事について

PERSC編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。