Skip to content

Instantly share code, notes, and snippets.

View kohya-ss's full-sized avatar

Kohya S. kohya-ss

View GitHub Profile
@kohya-ss
kohya-ss / mem_eff_safeopen.py
Last active August 23, 2024 03:41
メインメモリを消費しないsafetensorsファイル読み込み・保存
# License: Apache 2.0
import io
import struct
import json
import torch
class MemoryEfficientSafeOpen:
# does not support metadata loading
@kohya-ss
kohya-ss / llm_novelist_v1.py
Last active September 5, 2024 07:36
ローカルLLMに小説を書いてもらう
# Apache License 2.0
# 使用法は gist のコメントを見てください
import time
import argparse
import os
import json
import tomli
import traceback
from typing import Any, Dict, List, Optional, Union, Iterator
@kohya-ss
kohya-ss / llm_characters.py
Last active September 5, 2024 07:37
system promptを切り替えてLLMに複数キャラを会話させる
# Apache License 2.0
# 使用法は gist のコメントを見てください
import argparse
import importlib
import json
import os
import random
import time
import traceback
import tomli
@kohya-ss
kohya-ss / stepwise_linear_decay_lr_scheduler.py
Created May 22, 2024 13:40
指定ステップまで定数、そこから減少、その後定数
# 仮に logs に入れたら以下のように指定
# --lr_scheduler_type logs.stepwise_linear_decay_lr_scheduler.get_stepwise_linear_decay_lr_scheduler
# --lr_scheduler_args "step_a=50" "step_b=80" "factor_1=1.0" "factor_2=0.1"
#
# step_a までの学習率: 指定した learning_rate * factor_1
# step_a から step_b まで: 線形に減少(増加)
# step_b からの学習率: 指定した learning_rate * factor_2
from torch.optim.lr_scheduler import LambdaLR
@kohya-ss
kohya-ss / get_wd14_tag_confidence.py
Created May 17, 2024 12:57
WD14 Taggerでタグごとの確信度を取得する
import argparse
import csv
import glob
import os
from pathlib import Path
import cv2
import numpy as np
import torch
from PIL import Image
@kohya-ss
kohya-ss / make_prompts_with_dartv2.py
Created May 15, 2024 11:17
Dart V2を使ってプロンプトを作成
# Dart v2を用いて sd-scripts の gen_img.py 用のプロンプトファイルを作成するスクリプト
import random
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# Rating tag: <|rating:sfw|>, <|rating:general|>, <|rating:sensitive|>, nsfw, <|rating:questionable|>, <|rating:explicit|>
# Aspect ratio tag: <|aspect_ratio:ultra_wide|>, <|aspect_ratio:wide|>, <|aspect_ratio:square|>, <|aspect_ratio:tall|>, <|aspect_ratio:ultra_tall|>
# Length tag: <|length:very_short|>, <|length:short|>, <|length:medium|>, <|length:long|>, <|length:very_long|>
"""
@kohya-ss
kohya-ss / gradio_llm.py
Last active September 1, 2024 22:02
gradioでLLMを利用する簡易クライアント
# Apache License 2.0
# 使用法は gist のコメントを見てください
import argparse
from typing import List, Optional, Union, Iterator
import llama_cpp
from llama_cpp.llama_chat_format import _convert_completion_to_chat, register_chat_completion_handler
import llama_cpp.llama_types as llama_types
from llama_cpp.llama import LogitsProcessorList, LlamaGrammar
from llama_cpp import Llama, llama_chat_format
@kohya-ss
kohya-ss / gradio_cmdrp.py
Created April 18, 2024 13:09
llama-cpp-python と gradio で command-r-plus を動かす
# Apache License 2.0
# 使用法は gist のコメントを見てください
import argparse
from typing import List, Optional, Union, Iterator
from llama_cpp import Llama
from llama_cpp.llama_tokenizer import LlamaHFTokenizer
from llama_cpp.llama_chat_format import _convert_completion_to_chat, register_chat_completion_handler
import llama_cpp.llama_types as llama_types
@kohya-ss
kohya-ss / sdxl_train_te_leco.py
Last active March 21, 2024 12:12
LECOっぽいText Encoder only LoRAを学習する検証実装
# sdxl_train_network.py と同じ引数を指定してください
# --network_train_text_encoder_only オプションが必須です
#
# 260行目あたりの src_str, tgt_str に変換元と変換先のテキストを指定してください
# tagger の selected_tags.csv が必要ですので、適宜パスを変更してください
# この辺にあります : https://huggingface.co/SmilingWolf/wd-v1-4-swinv2-tagger-v2/tree/main
#
# "1girl" タグだけは必ず含まれる感じにしているので、必要なら 820 行目あたりを適宜変更してください
#
# 以下のオプションは指定できません(エラーになります):
@kohya-ss
kohya-ss / vae_vs_taesd_gradio.py
Last active March 18, 2024 23:17
VAEとTAESDのdecode結果を比較するやつ、Gradio版
# Claude 3 Opus とめっちゃやり取りして動くようになった
# python vae_vs_taesd_gradio.py --image_dir /path/to/image/directory
import os
import argparse
import random
from PIL import Image
import torch
from diffusers import AutoencoderKL, AutoencoderTiny
import numpy as np