極北別世界通信

カテゴリ:技術関連

Stable Diffusion

まぁあっちこっちで大量にブログ記事出てますし今更感もありますが、一応やったことは書き留めておこうの方針。

■ハードウェア

必須:nVidia製 VRAM 12GB以上のグラボ

厳密に言えばもっと低スペックのものでも動きますが、5万弱くらいですしさんざん遊び倒せるのでこのために購入するもアリかと

いまだとあっちこちで書かれてますが GeForce RTX3060 12GB (当方もこれ)が手ごろかと。

なおCPUは早ければ早いほど、メモリは多ければ多いいほどいいと思いますが、当方環境は

CPU:Core i3-4xxx(第4世代)

メモリ:16GB

でもなんとかなってるのでまぁ。

それよりもデスクトップPCを持ってない、あってもメインの1台、ケースが多いと思うので(複数台持ってるようは人はもうやってるでしょう)そこのほうがネックになるかもしれませんね。

可能ならこれ専用のマシンが1台あるほうがベターです。

中古型落ち品でCore5-7xxx以下の型番なら (Windows 11が確実に動かないので)今なら投げ売りしてる気がするのでなんとか準備してください。

 

 

■導入

・Python 3.10.6 のインストール https://www.python.org/downloads/release/python-3106/

※3.11が最新ですが、3.10.6でないと動きません。あと言うまでもないですが64bit版です。

インストールは普通にダブルクリックして進めればいいですが以下2点を注意

1.「Add Python 3.10 to PATHにチェック」

Pythonのインストーラの最初の画面では、左下に「Add Python 3.10 to PATH」というチェックボタンがあるのでチェックします。

その後、Install Nowを押してインストールを開始します。

2.パス最大260文字制限の解除

インストールが完了した後で「Disable path length limit」というボタンが見えますので、これを押します。
これを押すと、260文字までのパス長(フォルダ名などの長さ)の制限を解除するためのレジストリ変更処理が行われます。

なぜやるか?というと、Stable Diffusionなどの処理で、長いパス名を実行したりする際に260文字以上になる場合があり、エラーになってしまうことがあるからです。

コマンドプロンプトを起動して「python -V]

を実行してバージョンが表示されればOK

・git のインストール https://gitforwindows.org/

Git公式からWindows 64bit版をインストールします。基本的にデフォルトのままでいいはずですが

「Git bash here」というチェックだけは入れたほうがいい」

という記事もあるのでおこのみで。(Web UIのアップデートが楽になるそうですが未確認)

「git -v」を実行して、Gitのバージョンが表示されればOK

・Stable Diffusion WebUI

元々のStable Diffusionは(ざっくり言うと)pythonのコマンドラインで学習や生成を行うため、非常に面倒です。

それを楽に行うためのWeb UIがリリースされていますので、これを利用します。

わかる方はインストールしたGitでCloneしてもいいですし、

https://github.com/AUTOMATIC1111/stable-diffusion-webui

をZiPダウンロードして展開しても構いません。(sd.webui.zip というダウンロードリンクもあります)

ツールとして有効に使うならアップデートや他のツールインストールなども踏まえてCloneしたほうがいいようですが、ここでは体験することを優先するのでお好きなほうで。

ここではzipファイルを展開したパターンでのインストール説明をします。

展開先は任意のフォルダで大丈夫ですがパスは日本語を含めないほうが無難です。

なお、当方はFドライブに入れてますがアップデートやスクリプト等のgitでのインストールが上手くいくかどうかは不明です。

(のちに一部extensionのインストール時に権限周りでエラーが出たりしたので、使い続ける場合はgitでインストールしたほうがいいのかも)

※注意:当方が実施した順で記載してますが、update.bat -> run.bat の順序のほうが良いかもしれません。

フォルダ内の「run.bat」をダブルクリックして起動します。

 自動でインストールが進みますので「続行するには何かキーを押してください」という表示が出るまで待ちましょう

上記インストールが完了後、「update.bat」も実行しておきましょう。

続いて「webui」フォルダの中にある「webui-user.bat」を「編集」します。

「set COMMANDLINE_ARGS=」の行を以下の通り書き換えます。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--autolaunch --xformers

call webui.bat

※なお、ここに以下に続く設定をすることで低スペックのグラフィックボードでも動くそうですが、試していません。

参考のために記載しておきますが自己責任でお願いします。

【ハイスペックGPU(VRAM12GB以上)】※上記で設定したのはこれ
--autolaunch --xformers

【ロースペックGPU(GTX10xxなど)】
--autolaunch --medvram --xformers

【GTX16xx専用】
--autolaunch --precision full --no-half --medvram --xformers

【VRAM4GBの超ロースペックGPU】
--autolaunch --lowvram --xformers

•autolaunch:
起動時にシステムのデフォルトブラウザで自動的にWebUIを開く。お好みで。
•precision full:
GTX16xxユーザー向け。起動時に画面が真っ黒になるのを防ぐ。
•no half:
GTX16xxユーザー向け。起動時に画面が真っ黒になるのを防ぐ。
•medvram:
生成速度を犠牲にVRAM消費量を節約する。
•lowvram:
medvramよりさらに生成速度を犠牲にしてVRAM消費量を大幅に節約する。
•xformers:
AIイラストの生成速度を高速化する

なお、VRAM6GB程度のGPUならlowvramではなくmedvramでもOKとのことです。(medvramにした方が、lowvramより2倍くらい生成時間が早くなるらしい)

VRAM4GBの場合はlowvramが必須のようです。

precision fullと no-halfに関しては、画面が真っ黒になる等のエラーが表示される場合に設定すると良いとのことです。

モデルデータの導入

AIによる画像生成はモデルデータと呼ばれる学習情報を元に行います。

色々な種類のモデルがありますが、これはもう各自の好みやどういったものを作りたいかということもあるので、最終的には各自で探してみてください。

ここでは、現在のStable Diffusionの前のバージョンのbaseモデルをバージョン2.1用に同じデータセットで調整したものということなので、以下をダウンロードしてセットします。

https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.ckpt

ダウンロードしたファイルを

【インストールフォルダ】\webui\models\Stable-diffusion

に配置します。

また、以下を取得して同じフォルダに置きます。

https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference.yaml

 ※上記の実施の内容については

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#stable-diffusion-20

に説明があります。

これで準備が整ったので、「run.bat」を実行して起動します。

基本的には「prompt」にワードを入れて画像を生成しますが、単純な語句を入れただけだと思ったような画像にはなりません。あと語句は基本的に全て英語で入れます。

もちろん「dog」とか「cat」とか入れればそれらしい画像は生成されますが、細かいシチュエーション、背景、構図などの指定をしたり、逆に表示して欲しくないものは下の段の「negative prompt」に入れることでうまく生成されるようになります。

表示された画像に対して、細かな語句を調整したりすることでより生成したいイメージに合ったものにしていきます。

当サイトはセンシティブなネタは扱いませんが、おそらくニーズとしては現状、圧倒的に「そちら」方面な気はします。まぁこの手のテクノロジーの発展当初としてはある意味健全な気はしています(というかちょっと調べればわかりますが、そらまぁそういう用途に使うよね、としか思わない)

が、少し前のDeepFakeなどのように権利侵害などで問題になるようなケースが今後も出てくるものと思います。

折角の優れたテクノロジーも結局使うのは人間なので、どこまで行っても使う人間のリテラシー次第だなぁと思ったりします。

とりあえずインストールについて書いてみました。

時間があれば次回以降の同人誌の表紙くらいはこれで作ってみようかなぁと思っているのでその辺のことが書ける日が来たらまた。

0

Todo覚書

・既存リモート環境にシングルサインオンの導入
 →Rocketchatのみ完了 原稿化予定

・その他のシステム
 →架空の会社の社内システムを全部OSSで作るという
  試験を1年ほどかけてやろうと思っています。
  なので普段使いしているApache Guacamoleとインフラ系のDNSとかを除いて
  まるっと構築しなおそうと考えています。

・Dockerプライベートレジストリをjenkinsとgitlab使って構築
 →ネタとして面白そうと思ったのですが、当方がDockerを普段使いしてないので
  イマイチ着手に至っていません。

・Snipe IT使って資産管理システム
 →どちらかというとシステムより実際の登録と運用が肝。
  導入自体は割と容易だったのですが、今回の架空の会社システム構築の際に
  やり直す予定

・Exmentの活用の具体例
 →こちらも同上。設計の大切さが身に沁みますな

・Zabbixでの監視と、各種ログのとりまとめ、可視化
 →監視自体は設定してますが、細かい通知とかログのとりまとめはできてません。
  ただそもそも監視に何を使うかの選定を優先する予定
  (その上で架空の会社のシステム構築を行う方向)

・ヘルプデスクシステムをオープンソースで何とかする
 →まだまだ調査段階。3つくらい候補がありますが、これも架空の会社の
  システム構築で対応する予定。

■その他
・というわけで、いまのところは現行で使ってるもののうち残すものと新しい企画のために
 いったんまっさらにするものに分けて対応する予定です。

まぁ自分向けのTodoなんですが。

0

覚書更新

・オープンソースHCI

→オール仮想マシンでやろうとして失敗中

・既存リモート環境にシングルサインオンの導入

→Rocketchatのみ完了

→NextCloudはできるらしいが若干不安あり

→その他はまだ厳しそう

・Dockerプライベートレジストリをjenkinsとgitlab使って構築 →未着手

・Snipe IT使って資産管理システム

→どちらかというとシステムより実際の登録と運用が肝。少しずつやってるがあまり進捗なし

・Exmentの活用の具体例

→わりと同上。インストールやら構築よりその先のほうが肝心

・Zabbixでの監視と、各種ログのとりまとめ、可視化

→進んでない。他の機能の方を優先してる感じ

・ヘルプデスクシステムをオープンソースで何とかする

→まだまだ調査段階

■その他

・GoogleのSearch consoleやらは放置しすぎてたのとodooで構築してたサイトが度々接続切れてたせいかGoogle八分食らってて草生える。ちゃんとしないと。

・コソコソいろんな仕事の対応したりしてたら異常にいそがしく

・技術書典10に申し込んだがなにやろう。

・とりあえず自分で使ってて最も有用なApacheGuacamoleは押し続けたい所存。ログ取りやら解析やらそのあたりももう少し踏み込んでやりたい

・今更シェルスクリプト書いたりしてるけどなんというかコードがきったねぇ。エレガントに?書く訓練もしとらんからあれだが

 

0

唐突にマインクラフトサーバ

そういや子供が以前からマインクラフトをやりたがっていたので、統合版のサーバをさっくり立ててみることにする。

以前調べた時は、統合版の発売前だったようで、PCからのJava版と他のプラットホームは共存できないという話だったと記憶してましたが、今回調べたら統合版というのが出てて、マルチプラットフォームが可能らしいのでちょいとサーバを立ててみることにしました。

OSごとに多少なり違いはありそうですが、潤沢な仮想マシンリソースを使ってとりあえず立ててみます。

■準備

OS:Ubuntu server 20.04 LTS

マインクラフトサーバ

オフィシャルサイトからダウンロードしますが、なんか、日本版のサイトだと2020年11月現在ダウンロードできないっぽい

なのでUSサイトからダウンロードします。

https://www.minecraft.net/en-us/download/server/bedrock

■手順

1 Ubuntuをインストール

ベースは別のUbuntu上のVirtualBox仮想マシン。8コア16GB割当。実際はもっと少なくてもいいはず。

なおインストール中に設定したほうが楽なのでIPアドレスとホスト名はちゃんと決めておきましょう

 ダウンロードしたファイル内にあるhtmlファイルに詳細な情報が載ってるので、正直インストールとかは全然難しくないです。

2 unzipをインストール

最初のアップデートを実施後、unzipをインストールします

$ sudo apt -y install unzip

3 ダウンロードしたマインクラフトサーバソフトを任意のディレクトリに配置

他のファイルを置かない空のディレクトリ作成してそこに置くのが推奨のようです 

今回は自身のホームディレクトリ配下に作成したディレクトリ内に展開するので以下のようにしています。

$~ mkdir bdc
$ cd bdc
$ unzip bedrock-server-1.16.40.02.zip

※上記は2020/11/17現在のバージョン

※余談
オフィシャルサイトからはwgetとかで持ってきてもいいですが、

Windowsでダウンロード→サーバにTera Termでsshログイン→Tera Term画面にD&D

 でも事足ります。便利になりましたなぁ(じじいくさい)

4 screenのインストール

このまますぐに起動してしまってもいいんですが、screenを使って起動してあげるとサーバから抜けても稼働し続けてくれるので楽。

やり方はまぁ何でもいいですが、

$ LD_LIBRARY_PATH=. screen -dmS bds ./bedrock_server

とやって、dbsというスクリーン内で起動し、デタッチしてしまうのが割と楽かと。

コンソールからScreenにアクセスする(アタッチする Ubuntu→BDS)には

$ screen -r bds

Screenから抜けてコンソールに戻る)デタッチする BDS→Ubuntu)には

Ctrl+a d

※ctrlキーを押しながら a を押下し、続けて d を押下すると抜けます。

もちろんsystemctlに登録して自動起動するように設定したりもできますがまぁその辺はお好みで。

※もしちょっとしらべて登録したらまた追記するかもしれません。

…実はまだクライアント購入してないんで、購入したら子供に感想でも聞いてみます。

0

おぼえがき

技術書典にかぎりませんが、何かしらないとなかなかきちんとインストール手順とかそういうのもまとめませんね。。。

というわけでイベント様様です。

あと今後やりたいこととかのメモ(前にも書いたけどまぁ)

 

・オープンソースHCI

・既存リモート環境にシングルサインオンの導入

・Dockerプライベートレジストリをjenkinsとgitlab使って構築

・Snipe IT使って資産管理システム

・Exmentの活用の具体例

・Zabbixでの監視と、各種ログのとりまとめ、可視化

・ヘルプデスクシステムをオープンソースで何とかする

ポイントは当方プログラマでも何でもないので自分でコード書いてどうにかする、という手段は取れないという点です。(自慢にならん)

なるべくありものを駆使してなんとかできれば。

0

GASとか

いろいろやりたくていじり始めてますが、結局Googleアカウント持ってる人用にするか、フルオープン(実際にはURL文字列が複雑なんで、ちょいと見つけて、、、ってふうにはそうそうならないですが)にするかしかないのがちょっと不安点。

まぁG SuiteなりGCPなり契約して欲しいからの制約だとは思いますが。

当方別にコード書きじゃないことが災いして?「こういうのがやりたい、出来るのかな」でいろいろ調べ始めるので、なかなかとっつかないんですよねぇ。

javascriptだってコピペレベルでしか覚えてませんしね。

 

0