WSLのUbuntu上でbashのプロンプトをカスタマイズ

目標

bashで時間とディレクトリを改行しながら表示したい

zenn.dev

経過

上記の記事を参考にカスタマイズしていたら、表示が崩れました。

PS1='\n\e[32m[\u@\h] \e[35m\t \n\e[36m\w \n\e[0m\$ '

bashの履歴を見ると、4文字余計に表示される。

[user@host] 22:37:17
~
$ sourvi ~/.bashrc

解決

miau.hatenablog.com

上記の記事を参考に修正しました。

PS1='\n\[\033[32m\]\ek\e\\\][\u@\h] \[\033[35m\]\t\n\[\033[36m\]\w\n\[\033[0m\]\$ '
[user@host] 22:37:59
~
$ vi ~/.bashrc

はてなブックマークをカスタマイズする拡張機能を公開しました

chrome.google.com

追加機能一覧

はてなブックマークを閲覧しやすく、フィルター機能を追加します。

  • フィルター機能の追加

    • 指定したワードで、タイトル・概要・タグ・URL を対象にフィルタリング
    • 関心ワードのページもフィルタリング
  • 表示変更

    • メニューのカテゴリ一覧をホバー時に表示
    • 記事のサムネイルをホバーすると、概要を表示
    • 関心ワードの下部ページを自動で読み込むように
  • キーボードショートカットの追加

    • [J] / [K] : 記事をフォーカス
    • [O] : 新しいタブで開く(フォアグラウンド)
    • [Alt] + [O] : 新しいタブで開く(バックグラウンド)
    • [Alt] + [J] / [K] : 次/前のページに移動
  • 更新情報

    • Ver1.0.6 関心ワードのURLでフィルタリングするように修正.

フィルタ機能は、タイトルだけでなく概要も対象にしています。
効率よく情報を閲覧できるようになるので、ぜひ使ってみてください。

Node.js基礎 - Node.jsの学習2

  • バージョン管理
    • nvm
  • コードの実行
  • ディレクトリとファイルの操作
  • パスの取り扱い
  • ES ModulesとCommonJSについて
    • モジュールとは
    • 各環境ごとのモジュール管理システム
    • CommonJSの特徴
    • ES Modulesの特徴
    • CommonJSのモジュールの取り扱い
    • ES Modulesのモジュールの取り扱い
    • CommonJSとES Modulesが混在する場合
    • ES Modulesの挙動の違い
  • ブラウザ環境とNode.js環境の違い
  • デバッグの方法

バージョン管理

nvm

# インストールできるバージョンの確認
nvm ls-remote

# 指定バージョンのインストール
nvm i v15.11.0
nvm i v20

# 使用バージョンの指定
nvm use v20

# 現在設定しているバージョン
nvm current

コードの実行

node [jsファイルのパス]
続きを読む

Ubuntuで*:Zone.Identifierを削除する方法

あらすじ

Windows上でインターネットからダウンロードしたファイルをUbuntuに移してZone.Identifierが混じってたときに削除したいと思いました。

実行

  • 現在のディレクトリ内のIdentifier拡張子ファイルをすべて削除するコマンド
find -name "*.Identifier" -exec rm {} \;

参考にさせていただいた記事

ascii.jp

utano.jp

JavaScript基礎 - Node.jsの学習

UdemyでNode.jsの学習を始めました。 www.udemy.com

  • VSCodeのショートカット
  • JavaScript基礎
    • コールバック関数について
    • DOMとイベントリスナについて
    • Arrayオブジェクトのメソッドの使い方
      • mapメソッドの使い方
    • 分割代入
    • スプレッド演算子
    • 三項演算子
    • truthyとfalsy
      • falsyな値の一覧
    • 非同期処理 (Promise)
    • 非同期処理 (await / async)

VSCodeのショートカット

操作概要 Windows macOS
行の削除 Ctrl+Shift+K ⇧⌘K
次を検索 F3 ⌘G

JavaScript基礎

コールバック関数について

  • コールバック関数とは
    関数の引数に渡す関数
function print(callback) {
  const result = callback(2)
  console.log(result)
}

function fn(number) {
  return number * 2
}

// デバッグのために処理を止める記述
debugger
// 開発者ツールのソースでステップインを押すと処理が進む
print(fn) // 4

console.log(fn(2)) // 4
続きを読む

LoRAの学習のためにsd-scriptsを使ってみました

セーターを着た女性

あらすじ

www.techno-edge.net

github.com

こちらの記事を参考にsd-scriptsを使用して、LoRAの学習モデルを作成していました。*1

(venv) PS D:\sd-scripts> accelerate launch --num_cpu_threads_per_process 1 sdxl_train_network.py --pretrained_model_name_or_path='D:\checkpoints\SDXL\sd_xl_base_1.0.safetensors' --dataset_config='D:\LoRA\config.toml' --output_dir='D:\LoRA\output' --output_name='kaede01aXL' --save_model_as=safetensors --prior_loss_weight=1.0 --resolution=1024,1024 --train_batch_size=1 --max_train_epochs=20 --learning_rate=1e-4 --xformers --mixed_precision="fp16" --cache_latents --gradient_checkpointing --network_module=networks.lora --no_half_vae
※太字にしている部分が変更可能箇所

上記のコマンドを実行するとエラー発生しながら動作しました。

A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'

このままでも作成できるのですが、続けて作成すると速度が遅くなったりしました。
私の環境だと、動作が不安定な気がしたのでUbuntu (WSL)で使用することにしました。

Ubuntu上でLoRAモデル作成

github.com

仮想環境の作成

sudo apt install update
sudo apt install upgrade

curl https://pyenv.run | bash

# pyenv install時にエラーが発生したので、下記で解決

# make: *** [Makefile:1280: install] Error 1
sudo apt install build-essential
sudo apt install libssl-dev libffi-dev libncurses5-dev zlib1g \
zlib1g-dev libreadline-dev libbz2-dev libsqlite3-dev make gcc

# ModuleNotFoundError: No module named '_lzma'
sudo apt install liblzma-dev

# ModuleNotFoundError: No module named 'tkinter'
sudo apt-get install python3-tk

pyenv install 3.10.6 
pyenv global 3.10.6
python -m venv venv
source venv/bin/activate

パッケージのインストール

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 \
--index-url https://download.pytorch.org/whl/cu118
pip install --upgrade -r requirements.txt
pip install xformers==0.0.20

sd-scriptsの設定

# config.toml
[general]
[[datasets]]
[[datasets.subsets]]
image_dir = '/home/Username/LoRA/data' # 学習用画像を入れたフォルダ
class_tokens = 'xxxx01a woman' # identifier class
num_repeats = 10 # 繰り返し回数

モデルの作成

# 作成時にエラーが発生するので、下記で解決
# ImportError: libGL.so.1: cannot open shared object file
sudo apt-get install libgl1-mesa-dev

accelerate launch --num_cpu_threads_per_process 1 sdxl_train_network.py \
--pretrained_model_name_or_path='/home/Username/checkpoints/SDXL/sd_xl_base_1.0.safetensors' \
--dataset_config='/home/Username/LoRA/config.toml' --output_dir='/home/Username/LoRA/output' \
--output_name='xxxx01aXL' --save_model_as=safetensors --prior_loss_weight=1.0 \
--resolution=1024,1024 --train_batch_size=1 --max_train_epochs=20 --learning_rate=1e-4 \
--xformers --mixed_precision="fp16" --cache_latents --gradient_checkpointing \
--network_module=networks.lora --no_half_vae

結果

エラーもなくなり、安定した速度で学習できました。
精度の高い写真が生成できて満足です👍

カバー写真のプロンプト

  • Positive
Photo of a japanese woman, (xxxxx:1.5), … <lora:xxxxx_01aXL:0.8>
BREAK
(HDR, 8k,best quality, masterpiece:1.2), photorealistic
(ultra-detailed background:1.2, detailed background:1.2), 
(1 girl:1.5), her room, sitting in desk, dress, preppy style, collared shirts, 
khaki pants, (face:1.3), cable knit sweaters, loafers, blazers, 
plaid skirts, smile, beautiful face,  (raw skin, detailed skin:1.4), (slender eyes:1.3),
  • Negative
EasyNegative, paintings, sketches, bad_prompt_version2, 
badhandv4, bad-hands-5,NG_DeepNegative_V1_75T, negative_hand-neg, 
cloned face, (strabismus, gynophore:1.3),  bad anatomy, jpeg_artifacts, signature,
watermark, username, blurry, ugly, (worst quality:2), (low quality:2)
  • 参考にさせていただいたプロンプト

www.chichi-pui.com

追記

再度モデルを作成していたら、別のエラーが発生しました。

Killed "${python_cmd}" -u "${LAUNCH_SCRIPT}" "$@"

debugの部分をコメントアウトしたら、直りました。

# /home/Username/.cache/huggingface/accelerate/default_config.yaml

compute_environment: LOCAL_MACHINE
# debug: false
distributed_type: "NO"
downcast_bf16: "no"
gpu_ids: all
machine_rank: 0
main_training_function: main
mixed_precision: fp16
num_machines: 1
num_processes: 1
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false

*1:LoRA: 好きな絵柄・キャラクターを追加で学習させたモデルを利用して画像生成できる

Stable Diffusion 学習めも

ルリア
ルリア

モデル (checkpoint)

学習済みのデータ

イラスト系

AbyssOrangeMix3 (公開日: 2023/2/17)
雑なプロンプトでも、安定した出力

7th_anime_v3 (公開日: 2023/1/15)
A,B,Cの3種類があり、画風が多少異なる。好みに合わせて選ぶ

  • Aがアニメ寄り
  • Bが漫画寄り
  • Cがさらに漫画寄せ

Anything V5 (公開日: 2023/3/26)
7th_animeと似たような感じ

Counterfeit-V3.0 (公開日: 2023/4/29)
色が濃い

yden v2.0 (公開日: 2023/3/25)
はっきりとした主線、色が濃い

実写系

Basil mix (公開日: 2023/1/4)

ChilloutMix (公開日: 2023/2/17)

プロンプト

生成する画像の内容を指示ために入力するテキスト

共通

# 品質
- Positive
masterpiece, best quality, high quality,

- Negative
nsfw, 
EasyNegative,(worst quality, low quality:1.3), 
(monochrome, grayscale, poorly eyes, bad hands, watermark, username:1.2),

# ひとりの女性
- Positive
1girl, 1 girl, woman, a woman, 1 woman, solo, solo focus, alone,

拡張機能

Dynamic Prompts

github.com

インストール

Dynamic Promptsのインストール方法

追加プロンプト

「|」を区切りにランダムで出力されるようになります。

- Positive
{angry|happy|sad|smile},

参考にさせていただいた記事

wikiwiki.jp booth.pm www.chichi-pui.com