タグ: python

  • Google Colab 初手の初手 – GPUいらずでパワフルなAI開発環境を手に入れよう

    皆さん、こんにちは!生成AI時代に「つくる人をつくる」で活動しているAICU media編集部です。
    勉強がはかどる秋の夜長ですね!今回は手法を変えて、画像生成だけでなく、Pythonや機械学習の勉強に役立つGoogle Colabの基本操作について解説していきます。GPUいらず、Gmailアカウントさえあれば無料で利用できるパワフルなAI開発環境を手に入れましょう!

    Google Colabとは?

    Google Colabは、ブラウザ上で利用できるGoogleの無料のPython開発環境です。Googleドライブと連携しており、機械学習やデータ分析などの作業に最適な環境を提供しています。

    Google Colabへのアクセス

    ブラウザで「Google Colab」と検索し、検索結果から「Google Colaboratory」をクリックしてアクセスします。

    https://colab.google/

    画像
    画像
    Google Colabのトップページ

    サンプルノートブックの実行

    Google Colabにアクセスすると、最初に「Colaboratoryへようこそ」というサンプルノートブックが表示されます。このノートブックは、Google Colabの基本的な操作方法を学ぶためのものです。

    ノートブックは、コードセルとテキストセルで構成されています。コードセルにはPythonコードを記述し、実行することができます。テキストセルには説明文や注釈などを記述することができます。

    基本操作

    サンプルノートブックで基本的な操作を確認してみましょう。

    1. コードセルの実行

    コードセルを実行するには、セルの左側に表示されている再生ボタンをクリックするか、セル内で「Ctrl + Enter」キーを押します。

    画像
    スクリーンショット:コードセルの実行

    2. 結果の確認

    コードセルを実行すると、その結果がセルの下に表示されます。

    Googleへのログインが済んでいない場合は、Googleへのログインが必要です。

    画像

    3. ランタイムの設定

    Google Colabでは、コンピューターのスペック(CPU、GPU、TPUなど)を選択できます。

    画像
    スクリーンショット:ランタイムの設定

    ランタイムの設定は、ノートブックのメニューから「ランタイム」→「ランタイムのタイプを変更」を選択して行います。

    4. セッションの終了

    Google Colabのセッションを終了するには、ブラウザのタブを閉じます。

    次のステップは…?

    今回は、Google Colabの基本操作について解説しました。Google Colabは、機械学習や大規模言語モデルだけでなく、画像生成AIの学習にも非常に役立つツールです。今後、Google Colabを使って、様々な画像生成AIのモデルを学習していきましょう。

    ここまでの手順はこちらの動画でも解説しております。

    Google Colabも画像生成も学べちゃう 画像生成Lesson(無料動画)

    Google Colabにも公式サンプルやはあるのですが、公式は初心者向けではないかもしれません。特にPythonによる開発環境「Jupyter notebook」に慣れた方であればこちらの基本機能比較が役に立つと思います。https://colab.research.google.com/notebooks/basic_features_overview.ipynb

    「Curated Notebooks」には「ChatGPTとGoogle Geminiの比較」といった玄人ごのみのサンプルもあります。

    https://colab.google/notebooks

    やってみました。
    「日本語英語とフランス語の違い列挙して」

    画像

    上のサンプルの動作確認にはGoogle GeminiのAPIに加えてChatGPTのAPIも必要です(それぞれクレジットカード等の登録が必要になります)。
    ちょっと初心者向けとはいい難いので、やはり無料で試せるStability AIのAPIを使った学習が良いかなと思いました。

    超入門:Stable Diffusionではじめる画像生成AI

    https://j.aicu.ai/coloso1

    Google Colabさえあれば、GPUは不要です!!

    以上、初心者け動画 「#画像生成Lesson」の紹介でした。
    これをみて「これならやれそう…?」という方は、ぜひ上を目指してみましょう。

    「生成AIクリエイティブ AICU」シリーズ
    ■超入門:Stable Diffusionではじめる画像生成AI
    https://j.aicu.ai/AICUXColosoJP
    ■初級者:広告企画から動画制作までのプロセス
    https://j.aicu.ai/ColosoJPXAICU
    ■ComfyUIマスター:カスタムノードとアプリ開発
    https://j.aicu.ai/Coloso3

    Originally published at https://note.com on Oct 29, 2024.

  • [5]ComfyUI カスタムノード徹底解説!機能とメリットを理解しよう

    こんにちわ、AICU media編集部です。
    「ComfyUI マスターガイド」第5回目になります。今回は、「カスタムノード」について、実際にインストールをした後の使い方と合わせて掘り下げていきたいと思います。

    前回はこちら シリーズ初回はこちら

      1. カスタムノードとは?

      カスタムノードとは、使う人が独自に機能を拡張することができる、ComfyUIの「拡張パーツ」のようなものです。まるでレゴブロックのように、様々なカスタムノードを組み合わせることができるので、自分だけのオリジナル作品を創造していくことできます。とても楽しそうですね!

      さて、カスタムノードがなぜあるのか。それは、使う人一人ひとりのニーズや創造性に合わせた柔軟な画像生成環境を提供するためです。標準機能だけでは実現できない、細かな調整や特殊効果、また最新のAI技術の導入などをカスタムノードでは行うことができます!

      初心者にとって、カスタムノードを理解することは、ComfyUIの可能性を最大限に引き出すための非常に重要な一歩となります。最初は難しく感じるかもしれませんが、この記事を通して、ぜひカスタムノードの基本的な知識を理解いただき、さらにComfyUIの世界をより深く探求するきっかけにしてみてください。

      2. カスタムノードの基礎知識

      カスタムノードとは何か

      カスタムノードは、ComfyUIの機能を拡張するためのユーザー定義のモジュールになります。料理で例えると、標準ノードが「基本的なレシピ」だとすれば、カスタムノードは「その人それぞれの独自のレシピ」と言えるでしょう。

      例えば、「野菜炒め」という料理を作る際に、野菜を切る、炒める、味付けをするといった基本的な手順は標準ノードでカバーできます。しかし、「特製ソースを使う」「隠し味を加える」といった独自の工夫は、カスタムノードで実現できます。

      画像

      カスタムノードの基本的な構造は、標準ノードと同様に、入力 → 処理 → 出力の流れで成り立っています。入力として画像やテキストなどのデータを受け取り、内部でPythonコードによって処理を行い、結果を出力します。

      例えば、「色調整ノード」であれば、入力として画像データを受け取り、明るさやコントラストなどを調整し、調整後の画像データを出力します。また、「プロンプト拡張ノード」であれば、入力として短いプロンプトを受け取り、それを詳細なプロンプトに拡張して出力します。

      カスタムノードとPythonの関係

      カスタムノードの内部処理は、Pythonというプログラミング言語で記述されています。Pythonは、その読みやすさと豊富なライブラリ、活発なコミュニティサポートによって、世界中で広く使われているプログラミング言語です。

      Pythonがカスタムノードに使用されている理由は、その柔軟性と拡張性の高さにあります。様々なライブラリを活用することで、画像処理、自然言語処理、機械学習など、多岐にわたる機能を簡単に実装できます。

      Pythonコードの基本構造は、入力の受け取り → 処理 → 出力の生成という流れです。カスタムノードでも、このPythonコードによって入力データを処理し、 望ましい出力を生成します。例えば、以下のようなコードでカスタムノードは作成されています。

      # カスタムノードの基本構造を示すサンプルコード
      
      # 1. 必要なライブラリをインポート
      import numpy as np
      from PIL import Image
      
      # 2. カスタムノードのクラスを定義
      class SimpleImageProcessor:
          # 3. 初期化メソッド
          def __init__(self):
              self.brightness_factor = 1.5
      
          # 4. 入力を受け取り、処理を行い、出力を生成するメソッド
          def process_image(self, input_image):
              # 入力画像をNumPy配列に変換
              img_array = np.array(input_image)
      
              # 画像の明るさを調整
              brightened_array = np.clip(img_array * self.brightness_factor, 0, 255).astype(np.uint8)
      
              # 処理結果を新しい画像として生成
              output_image = Image.fromarray(brightened_array)
      
              return output_image
      
      # 5. カスタムノードの使用例
      if __name__ == "__main__":
          # 入力画像を読み込む(実際のComfyUIでは自動的に提供されます)
          input_img = Image.open("input_image.jpg")
      
          # カスタムノードのインスタンスを作成
          processor = SimpleImageProcessor()
      
          # 画像を処理
          result_img = processor.process_image(input_img)
      
          # 結果を保存(実際のComfyUIでは自動的に次のノードに渡されます)
          result_img.save("output_image.jpg")
      
          print("画像処理が完了しました!")

      何が書いてあるかわからない?安心してください!Pythonコードを理解していなくても、カスタムノードを利用できます!ComfyUIは、ユーザーフレンドリーなインターフェースを提供しており、コードを直接操作することなく、カスタムノードの機能を活用できるのです。

      標準ノードとカスタムノードの違い

      標準ノードは、ComfyUIにデフォルトで搭載されている基本的な機能を提供するノードです。例えば、画像を読み込む「Load Image」や、プロンプトを入力する「CLIP Text Encode (Prompt)」などが挙げられます。これらのノードは、ComfyUIの基本的な操作を行うために必要不可欠です。

      しかし、標準ノードだけでは実現できない機能や、より高度な処理が必要になる場合もあります。そこで登場するのがカスタムノードです。カスタムノードでは、標準ノードではカバーできない機能を補完し、ComfyUIの機能を拡張することができます。

      例えば、複数の標準ノードを組み合わせて行っていた複雑な処理を、1つのカスタムノードにまとめることで、ワークフローを大幅に簡略化することもできます。また、最新のAIモデルを統合したカスタムノードを使用することで、より高品質な画像生成が可能となります。

      3. カスタムノードの重要性

      ComfyUIの柔軟性向上

      カスタムノードは、ComfyUIの柔軟性を飛躍的に向上させます。使う人は自分のニーズや好みに合わせて、様々な機能を追加し、ComfyUIを自分だけのツールへとカスタマイズすることができます。例えば、特定の画風や効果を簡単に適用できるカスタムノードを作成することで、自分だけのオリジナル作品を効率的に制作することも可能です。

      画像

      ユーザー体験の改善

      カスタムノードは、複雑な操作を簡略化しより直感的にComfyUIを使用できるようになります。また、視覚的にわかりやすいアイコンや名称を使用することで、ノードの機能を容易に理解し、スムーズなワークフローを実現できます。

      例えば、「efficiency-nodes-comfyui」というカスタムノードでは、モデルのロード(Load Checkpoint)、プロンプトの入力(CLIP Text Encode (Prompt))、空の潜在空間の作成(Empty Latent Image)などを1つのノードにまとめ、簡略化を実現しています。
      実際にインストールをしてみてみましょう。

      画像

      ワークエリア上でカチカチッとダブルクリックをして『efficient』と入力したら…出てきました!早速クリックをしてみます。

      画像

      補足です。空の潜在空間の作成(Empty Latent Image)とはいつもの text to imageな空の潜在空間では、画像のサイズや生成回数を記入しているノードのことです。

      画像

      通常の「Empty Latent Image」ノード
      ここではempty_latent_width, empty_latent_height, は 512, 512(SD1.5系)もしくは、1024, 1024 (SDXL系)、batch_size(生成回数) 1→15 など、用途に合わせて記入しましょう。

      画像生成プロセスの最適化

      カスタムノードは、画像生成プロセスの最適化にも貢献します。最適化されたアルゴリズムを使用することで、処理速度を向上させ、より短時間で高品質な画像を生成できます。また、高度なノイズ除去や詳細強化機能を追加することで、画像の品質をさらに向上させることができます。
      例えば、「ComfyUI_IPAdapter_plus」というカスタムノードでは、IP-Adapterという参照画像を基に画像生成を行える技術を簡単に使用することができるノードです。標準ノードでは実現が難しい技術をカスタムノードでサポートしています。

      画像

      コミュニティ駆動の革新

      カスタムノードは、ComfyUIコミュニティの活発な活動を促進し、革新的なアイデアを生み出す原動力となっています。使う人々が自由にアイデアを共有し、カスタムノードとして実装することで、多様なニーズに対応した機能が次々と誕生しています。特定の業界や用途に特化したカスタムノードも開発されており、ComfyUIの可能性は無限に広がっています。

      画像

      プログラミングの知識がなくても活用できる利点

      カスタムノードは、プログラミングの知識がなくても活用できるという大きな利点があります。ユーザーフレンドリーなインターフェース、コミュニティによるサポート、豊富な情報源など、初心者でも安心してカスタムノードを利用できる環境が整っています。最初は既存のカスタムノードを使用し、徐々に使い方を学び、最終的には自分でカスタムノードを開発する、といった段階的な学習も可能になってきます。

      画像

      4. まとめ

      カスタムノードは、ComfyUIの機能を拡張することで、ユーザー体験は格段と向上します。Pythonで記述されたこれらのモジュールは、ワークフローの効率化、高度な機能の追加、コミュニティ駆動の革新など、様々なメリットをもたらすことができます。

      Pythonとカスタムノードの関係を理解することで、ComfyUIの無限の可能性を最大限に引き出すことができます。初心者の方は、まずは既存のカスタムノードを試してみて、その機能や使い方を学んでみましょう!コミュニティのサポートや豊富な情報源を活用することで、徐々にカスタムノードに慣れていくことができます。

      今回は以上になります。
      どんどんComfyUIについて学ぶことが出来ているのではないでしょうか?この後のボーナストラックではお得なTipsを公開しております。次回も楽しくComfyUIを学べるような内容をご用意しておりますので是非楽しみにしていてください!

      画像生成AI「ComfyUI」マスターPlan

      画像

      画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

      • メンバー限定の会員証が発行されます
      • 活動期間に応じたバッジを表示
      • メンバー限定掲示板を閲覧できます
      • メンバー特典記事を閲覧できます
      • メンバー特典マガジンを閲覧できます
      • 動画資料やworkflowといった資料への優先アクセスも予定

      ゼロから学ぶ「ComfyUI」マガジン

      https://note.com/aicu/m/md2f2e57c0f3c

      マガジン単体の販売は1件あたり500円を予定しております。
      2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

      https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487

      もちろん、初月は無料でお試しいただけます!
      毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
      退会率はとても低く、みなさまにご満足いただいております。

      ✨️オトクなメンバーシップについての詳細はこちら


      この記事の続きはこちらから https://note.com/aicu/n/n5d5e6b0199b3

      Originally published at https://note.com on Aug 12, 2024.

    1. Google ColabでのAUTOMATIC1111 xformers関連の不具合と解決方法について(2024/5/22)

      Google ColabでのAUTOMATIC1111 xformers関連の不具合と解決方法について(2024/5/22)

      「生成AI時代に つくる人をつくる」AICUの しらいはかせ です。
      ご高評いただいております「画像生成AI Stable Diffusion スタートガイド」
      (通称 #SD黄色本 )掲載の主要なプログラム(SBXL1SBXL2)につきまして、編集部が本日、Google ColabでのAUTOMATIC1111において不具合を発見いたしましたので、本日、解説とともに修正を実施いたしました。

      【現象1】SD1.5系でGradioURLが表示されない

      p47 【Start Stable-Diffusion】のセルを実行時 WARNING[XFORMERS]: xFormers can’t load C++/CUDA extensions. xFormers was built for: PyTorch 2.2.1+cu121 with CUDA 1201 (you have 2.3.0+cu121) Python 3.10.13 (you have 3.10.12) Please reinstall xformers というエラーが出てURLも表示されず完了しません。

      読者の方からも同様のご報告を頂いております(SBクリエイティブさんありがとうございます)。

      【現象2】起動には成功するが画像生成に失敗する

      「Generate」ボタンを押すと以下のようなエラー表示されます。

      AUTOMATIC1111側にはこちらのエラーが表示されています

      NotImplementedError: No operator found for `memory_efficient_attention_forward` with inputs:
      query : shape=(1, 4096, 1, 512) (torch.float32)
      key : shape=(1, 4096, 1, 512) (torch.float32)
      value : shape=(1, 4096, 1, 512) (torch.float32)
      attn_bias : <class 'NoneType'>
      p : 0.0
      `decoderF` is not supported because:
      max(query.shape[-1] != value.shape[-1]) > 128
      xFormers wasn't build with CUDA support
      attn_bias type is <class 'NoneType'>
      operator wasn't built - see `python -m xformers.info` for more info
      `flshattF@0.0.0` is not supported because:
      max(query.shape[-1] != value.shape[-1]) > 256
      xFormers wasn't build with CUDA support
      requires device with capability > (8, 0) but your GPU has capability (7, 5) (too old)
      dtype=torch.float32 (supported: {torch.bfloat16, torch.float16})
      operator wasn't built - see `python -m xformers.info` for more info
      `cutlassF` is not supported because:
      xFormers wasn't build with CUDA support
      operator wasn't built - see `python -m xformers.info` for more info
      `smallkF` is not supported because:
      max(query.shape[-1] != value.shape[-1]) > 32
      xFormers wasn't build with CUDA support
      operator wasn't built - see `python -m xformers.info` for more info
      unsupported embed per head: 512

      ChatGPTによるログと日本語解説はこちら

      https://chatgpt.com/share/41ae4cbb-74ce-4e72-8851-42d1698f8bf0

      なお、xFormersとは、Facebook Research (Meta)がオープンソースソフトウェアとして公開しているPyTorchベースのライブラリで、Transformersの研究を加速するために開発されたものです。xFormersは、NVIDIAのGPUでのみ動作します。NVIDIAのGPUを演算基盤として動作させるためのCUDAやそのビルド時のバージョンをしっかり管理する必要があります。
      https://github.com/facebookresearch/xformers

      【関連】PyTorchとCUDAバージョンエラーの警告について

      実はPyTorchとCUDAバージョンエラーの警告も出ています。

      PyTorch 2.2.1+cu121 with CUDA 1201 (you have 2.3.0+cu121)
      Python 3.10.13 (you have 3.10.12)

      AUTOMATIC1111のインストールマニュアルによると
      https://github.com/AUTOMATIC1111/stable-diffusion-webui

      Install Python 3.10.6 (Newer version of Python does not support torch), checking “Add Python to PATH”.
      Python 3.10.6をインストールし、”Add Python to PATH “をチェックする。

      とありますが、実際にGoogle Colab上でデフォルトで動作しているPythonは現在、Python 3.10.12です(!python — version で確認できます)。
      Python3.10.6が推奨なので、だいぶ後続のバージョンを使っていることになります。この問題はGoogle Colab上でのPythonのメジャーバージョンに関する問題で、関係はありますが、文末で解説します。

      AICU版の原作となったTheLastBenさんのリポジトリでも同様の問題がレポートされています。

      Xformers Google Colab ERROR · Issue #2836 · TheLastBen/fast-stable-diffusion

      Getting Error in the last cell during the launch: WARNING[XFORMERS]: xFormers can’t load C++/CUDA extensions. xFormers…

      github.com

      Google Colabが xformers や JAX といった関連ライブラリを更新してしまうことが問題の根幹でもありますので不具合報告を Google Colab 側にも入れておきます。

      Python and xformers version conflict · Issue #4590 · googlecolab/colabtools

      Describe the current behavior I’m Google Colab Pro+ user and using TheLastBen’s Automatic1111 (A1111) frequently…

      github.com

      【解決】とりいそぎの回避方法

      Start Stable-Diffusionの手前にセルを追加して、以下のコードを入れて実行してください。これで問題の xformersをアンインストールし、解決したバージョンの xformers を再インストールできます。

      #@markdown ### xformers の再インストール(v20240522)
      !python --version
      !yes | pip uninstall xformers
      !pip install xformers

      この「xformers 0.0.26.post1」がインストールされていれば、問題なく動作するはずです。

      【補足】Google ColabのPythonはいつまで現行のバージョン3.10.xなのか

      ところで、いい機会なので Google Colab上でのPythonはいつまで現行のバージョンなのか、調べてみました。実は2024年4月にPython自体のメジャーバージョンアップが予定されているようです。
      https://colab.google/articles/py3.10

      colab.google

      Colab Updated to Python 3.10 With the upgrade to Python 3.10, it brings Colab into alignment with the cadence of final…

      colab.google

      Python 3.10 へのアップグレードにより、Colab はPython バージョン最終的な定期的なバグ修正リリースペースに合わせられます。 Python の次のバージョン (3.11) は、2024 年 4 月に最終的な定期バグ修正リリースが予定されています。

      最終リリースとなる Python3.11.9 は2024年4月2日にリリースされているので、実はもういつ移行してもおかしくない時期なんですね…これはAUTOMATIC1111ユーザーにとってはたいへん重要なアップデートとなります。いきなり使えなくなるのは困るのでGoogle Colab上での切り替えも用意されると良いですね…。
      Google Colab上での賢い方法を期待しつつ、さいごにPythonのメジャーバージョンのロードマップをチェックしておきましょう。

      https://devguide.python.org/versions

      Status of Python versions

      The main branch is currently the future Python 3.13, and is the only branch that accepts new features. The latest…

      devguide.python.org

      Python3.10は2026年中、Python3.11は2027年に終了(end-of-life ; EOL)が宣言されています。

      AICU Inc.は生成AI時代のつくる人をつくるとともに、オープンソースソフトウェアや日本語コミュニティへの貢献を常に行っています。

      書籍なのに最新のオープンソースソフトウェアがアップデートされる、
      新感覚の画像生成AIの教科書「画像生成AI Stable Diffusion スタートガイド」の購入はこちらから! https://j.aicu.ai/SBXL

      書籍[画像生成AI Stable Diffusionスタートガイド] – つくる人をつくる AICU Inc.
      著者:AICU media、白井 暁彦 発売日:2024年3月29日(金) ISBN:978-4-8156-2456-9サイズ:B5判 ページ数:224定価:2,640円(本体2,400円+10%税) 画像生成AIの1つであるStable…

      ja.aicu.ai

      Originally published at https://note.com on May 22, 2024.