From 72f626153580ecd7613b494722f919f6aa8c56a5 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 1 Sep 2026 08:24:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: KBlueLeaf/DanTagGen-delta Source: Original Platform --- .gitattributes | 38 ++++++++++++++++ README.md | 79 ++++++++++++++++++++++++++++++++ added_tokens.json | 8 ++++ config.json | 28 ++++++++++++ generation_config.json | 8 ++++ ggml-model-Q6_K.gguf | 3 ++ ggml-model-Q8_0.gguf | 3 ++ ggml-model-f16.gguf | 3 ++ model.safetensors | 3 ++ special_tokens_map.json | 38 ++++++++++++++++ tokenizer.model | 3 ++ tokenizer_config.json | 99 +++++++++++++++++++++++++++++++++++++++++ 12 files changed, 313 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 added_tokens.json create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 ggml-model-Q6_K.gguf create mode 100644 ggml-model-Q8_0.gguf create mode 100644 ggml-model-f16.gguf create mode 100644 model.safetensors create mode 100644 special_tokens_map.json create mode 100644 tokenizer.model create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0354888 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,38 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +ggml-model-f16.gguf filter=lfs diff=lfs merge=lfs -text +ggml-model-Q6_K.gguf filter=lfs diff=lfs merge=lfs -text +ggml-model-Q8_0.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..7a2c5d6 --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +--- +license: cc-by-nc-sa-4.0 +datasets: +- KBlueLeaf/danbooru2023-sqlite +language: +- en +library_name: transformers +pipeline_tag: text-generation +tags: +- not-for-all-audiences +- art +widget: +- text: "quality: masterpiece\nrating: safe\nartist: <|empty|>\ncharacters: <|empty|>\ncopyrights: <|empty|>\naspect ratio: 1.0\ntarget: <|short|>\ngeneral: 1girl, solo, dragon girl, dragon horns, dragon tail<|input_end|>" +--- + +# DanTagGen - delta +DanTagGen(Danbooru Tag Generator) is inspired from p1atdev's dart project. +But with different arch, dataset, format and different training strategy. + +## Difference between versions +alpha: pretrain on 2M dataset, smaller batch size. Limited ability +beta: pretrain on 5.3M dataset, larger batch size. More stable, better ability with only a few information provided. +delta: pretrain on 7.2M dataset, larger batch size. Slightly underfit but better diversity. quality tag introduced. + +## Model arch +This version of DTG is trained from scratch with 400M param LLaMA arch.(In my personal preference I will call it NanoLLaMA) +Since it is llama arch. Theoritically it should be able to be used in any LLaMA inference interface. + +This repo also provided converted FP16 gguf model and quantized 8bit/6bit gguf models. +Basically it is recommended to use llama.cpp or llama-cpp-python to run this model. Which will be very fast. + +## Format +```python3 +prompt = f""" +quality: {quality or '<|empty|>'} +rating: {rating or '<|empty|>'} +artist: {artist.strip() or '<|empty|>'} +characters: {characters.strip() or '<|empty|>'} +copyrights: {copyrights.strip() or '<|empty|>'} +aspect ratio: {f"{aspect_ratio:.1f}" or '<|empty|>'} +target: {'<|' + target + '|>' if target else '<|long|>'} +general: {", ".join(special_tags)}, {general.strip().strip(",")}<|input_end|> +""" +``` + +for example: +``` +quality: masterpiece +rating: safe +artist: <|empty|> +characters: <|empty|> +copyrights: <|empty|> +aspect ratio: 1.0 +target: <|short|> +general: 1girl, solo, dragon girl, dragon horns, dragon tail<|input_end|> +``` + +And you may get something like: +``` +rating: safe +artist: <|empty|> +characters: <|empty|> +copyrights: <|empty|> +aspect ratio: 1.0 +target: <|short|> +general: 1girl, solo, dragon girl, dragon horns, dragon tail<|input_end|>open mouth, red eyes, long hair, pointy ears, tail, black hair, chinese clothes, simple background, dragon, hair between eyes, horns, china dress, dress, looking at viewer, breasts +``` + +## Dataset and Training +I use the trainer I implemented in HakuPhi to run the training. +with 10epoch on 7.2M data. This model have roughly 10~15B token seen. + +The dataset is exported by HakuBooru with my danbooru sqlite database. Use the percentile of fav_count on each rating to filter the data. (2M = top 25%, 5.3M = top 75%) + +## Utilities +HF space: https://huggingface.co/spaces/KBlueLeaf/DTG-demo +Demo for DTG + Kohaku XL Epsilon: https://huggingface.co/spaces/KBlueLeaf/This-Cute-Dragon-Girl-Doesnt-Exist +SD-WebUI Extension: https://github.com/KohakuBlueleaf/z-a1111-sd-webui-dtg +ComfyUI Node: https://github.com/toyxyz/a1111-sd-webui-dtg_comfyui \ No newline at end of file diff --git a/added_tokens.json b/added_tokens.json new file mode 100644 index 0000000..8437ba1 --- /dev/null +++ b/added_tokens.json @@ -0,0 +1,8 @@ +{ + "<|empty|>": 32001, + "<|input_end|>": 32000, + "<|long|>": 32004, + "<|short|>": 32003, + "<|very_long|>": 32005, + "<|very_short|>": 32002 +} diff --git a/config.json b/config.json new file mode 100644 index 0000000..9936edd --- /dev/null +++ b/config.json @@ -0,0 +1,28 @@ +{ + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 1, + "eos_token_id": 2, + "hidden_act": "mish", + "hidden_size": 1024, + "initializer_range": 0.02, + "intermediate_size": 3072, + "max_position_embeddings": 2048, + "model_type": "llama", + "num_attention_heads": 16, + "num_hidden_layers": 24, + "num_key_value_heads": 16, + "pad_token_id": 2, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": null, + "rope_theta": 10000.0, + "tie_word_embeddings": false, + "torch_dtype": "float32", + "transformers_version": "4.38.2", + "use_cache": false, + "vocab_size": 32006 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..395ef7c --- /dev/null +++ b/generation_config.json @@ -0,0 +1,8 @@ +{ + "_from_model_config": true, + "bos_token_id": 1, + "eos_token_id": 2, + "pad_token_id": 2, + "transformers_version": "4.38.2", + "use_cache": false +} diff --git a/ggml-model-Q6_K.gguf b/ggml-model-Q6_K.gguf new file mode 100644 index 0000000..997bf63 --- /dev/null +++ b/ggml-model-Q6_K.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e43b55c254b28c85a58a01f10f2a2e910d95fa5b3858e885ee1226ee6c2f215c +size 323077792 diff --git a/ggml-model-Q8_0.gguf b/ggml-model-Q8_0.gguf new file mode 100644 index 0000000..3655df1 --- /dev/null +++ b/ggml-model-Q8_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fe276ea98f3be34694c5ca55f1cdda8e34fe838ab79af749de47b9ff3be8b85 +size 418185760 diff --git a/ggml-model-f16.gguf b/ggml-model-f16.gguf new file mode 100644 index 0000000..bd8990f --- /dev/null +++ b/ggml-model-f16.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc51b9f78ccaedf74cccb7874cb8dc074dde455becb88aa8e00919ae7968b774 +size 786345728 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..3fcde2b --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86bb7aa437de87f9902d1edad04074f76cd602c4b60309e04427afc0bcb78a38 +size 1571041624 diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..eda6fc5 --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,38 @@ +{ + "additional_special_tokens": [ + "<|input_end|>", + "<|empty|>", + "<|very_short|>", + "<|short|>", + "<|long|>", + "<|very_long|>" + ], + "bos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.model b/tokenizer.model new file mode 100644 index 0000000..6c00c74 --- /dev/null +++ b/tokenizer.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e556afd44213b6bd1be2b850ebbbd98f5481437a8021afaf58ee7fb1818d347 +size 499723 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..47d431d --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,99 @@ +{ + "add_bos_token": true, + "add_eos_token": false, + "add_prefix_space": true, + "added_tokens_decoder": { + "0": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "1": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "2": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32000": { + "content": "<|input_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32001": { + "content": "<|empty|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32002": { + "content": "<|very_short|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32003": { + "content": "<|short|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32004": { + "content": "<|long|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32005": { + "content": "<|very_long|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|input_end|>", + "<|empty|>", + "<|very_short|>", + "<|short|>", + "<|long|>", + "<|very_long|>" + ], + "bos_token": "", + "clean_up_tokenization_spaces": false, + "eos_token": "", + "legacy": false, + "model_max_length": 1000000000000000019884624838656, + "pad_token": "", + "padding_side": "right", + "sp_model_kwargs": {}, + "spaces_between_special_tokens": false, + "tokenizer_class": "LlamaTokenizer", + "unk_token": "", + "use_default_system_prompt": false +}