初始化项目,由ModelHub XC社区提供模型
Model: Lauarvik/NVIDIA-Nemotron-Nano-9B-v2-GGUF Source: Original Platform
This commit is contained in:
42
.gitattributes
vendored
Normal file
42
.gitattributes
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
*.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
|
||||
NVIDIA-Nemotron-Nano-9B-v2-bf16.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-BF16.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-Q8_0.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-Q6_K.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-IQ2_M.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
NVIDIA-Nemotron-Nano-9B-v2-Q3_K_M.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-BF16.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-BF16.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a24d24e085a89ecde73ae09af660a8e3d4c5a125c4a6bf3cae11e4a0b3c6c839
|
||||
size 17788743520
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-IQ2_M.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-IQ2_M.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e63ebd0dcfb5787f80206852a1fb24f71a92e750aa4c8fa49d0efa7d18951e49
|
||||
size 4996515936
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-Q3_K_M.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-Q3_K_M.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:87ba591eab9d858b7fc4acf69b43c32692578f3d233097e227ee71cd5f43d2e3
|
||||
size 5379735136
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-Q4_K_M.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-Q4_K_M.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:587c9fdb346f50f948ec41e676debc5c9f13148498783c644077215084421e38
|
||||
size 6525629536
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-Q6_K.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-Q6_K.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:63fb3a4c8e78fa20bdff73b81a5c13e8e27d5c46a9f04afd4029cb1c9880d156
|
||||
size 9135892320
|
||||
3
NVIDIA-Nemotron-Nano-9B-v2-Q8_0.gguf
Normal file
3
NVIDIA-Nemotron-Nano-9B-v2-Q8_0.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b6f8879a077de9ae0c15308d1feae5e363b741a1752e974a867e4d44f6fa25fb
|
||||
size 9458093920
|
||||
185
README.md
Normal file
185
README.md
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
base_model:
|
||||
- nvidia/NVIDIA-Nemotron-Nano-9B-v2
|
||||
---
|
||||
Quantized version of [nvidia/NVIDIA-Nemotron-Nano-9B-v2](https://hf.co/nvidia/NVIDIA-Nemotron-Nano-9B-v2)
|
||||
|
||||
При квантизации использовалась imatrix, корпус текстов для неё был создан следующим образом:
|
||||
```python
|
||||
import json
|
||||
import re
|
||||
import hashlib
|
||||
import time
|
||||
from datasets import load_dataset
|
||||
|
||||
OUT_PATH = "calib_nemotron.jsonl"
|
||||
|
||||
TARGET_SAMPLES = 7000
|
||||
CHUNK_SIZE = 900
|
||||
MIN_LEN = 300
|
||||
MAX_LEN = 3000
|
||||
|
||||
out = open(OUT_PATH, "w", encoding="utf-8")
|
||||
|
||||
seen = set()
|
||||
written = 0
|
||||
|
||||
|
||||
# -----------------------
|
||||
# SAFE LOAD
|
||||
# -----------------------
|
||||
def safe_load(*args, **kwargs):
|
||||
for i in range(5):
|
||||
try:
|
||||
return load_dataset(*args, **kwargs)
|
||||
except Exception as e:
|
||||
print("retry", i, e)
|
||||
time.sleep(2)
|
||||
raise RuntimeError("failed to load dataset")
|
||||
|
||||
|
||||
# -----------------------
|
||||
# CLEAN
|
||||
# -----------------------
|
||||
def clean_text(txt: str) -> str:
|
||||
if not txt:
|
||||
return ""
|
||||
|
||||
txt = re.sub(r"<[^>]+>", " ", txt)
|
||||
txt = re.sub(r"\s+", " ", txt).strip()
|
||||
|
||||
if "\x00" in txt:
|
||||
return ""
|
||||
|
||||
return txt
|
||||
|
||||
|
||||
# -----------------------
|
||||
# DEDUP
|
||||
# -----------------------
|
||||
def is_duplicate(txt: str) -> bool:
|
||||
h = hashlib.blake2b(txt.encode("utf-8"), digest_size=8).hexdigest()
|
||||
if h in seen:
|
||||
return True
|
||||
seen.add(h)
|
||||
return False
|
||||
|
||||
|
||||
# -----------------------
|
||||
# CHUNK
|
||||
# -----------------------
|
||||
def split_chunks(txt: str):
|
||||
for i in range(0, len(txt), CHUNK_SIZE):
|
||||
chunk = txt[i:i + CHUNK_SIZE]
|
||||
if len(chunk) >= MIN_LEN:
|
||||
yield chunk
|
||||
|
||||
|
||||
# -----------------------
|
||||
# WRITE
|
||||
# -----------------------
|
||||
def process_text(txt: str):
|
||||
global written
|
||||
|
||||
txt = clean_text(txt)
|
||||
if not txt or len(txt) < MIN_LEN:
|
||||
return
|
||||
|
||||
chunks = split_chunks(txt) if len(txt) > MAX_LEN else [txt]
|
||||
|
||||
for chunk in chunks:
|
||||
if written >= TARGET_SAMPLES:
|
||||
return
|
||||
|
||||
if is_duplicate(chunk):
|
||||
continue
|
||||
|
||||
out.write(json.dumps({"text": chunk}, ensure_ascii=False) + "\n")
|
||||
written += 1
|
||||
|
||||
|
||||
# -----------------------
|
||||
# CHAT
|
||||
# -----------------------
|
||||
def handle_chat(ds, ratio):
|
||||
global written
|
||||
target = int(TARGET_SAMPLES * ratio)
|
||||
start = written
|
||||
|
||||
for x in ds:
|
||||
if written - start >= target:
|
||||
break
|
||||
|
||||
conv = x.get("conversations")
|
||||
if not conv:
|
||||
continue
|
||||
|
||||
txt = "\n".join(
|
||||
f"{m.get('from','')}: {m.get('value','')}"
|
||||
for m in conv if m.get("value")
|
||||
)
|
||||
|
||||
process_text(txt)
|
||||
|
||||
|
||||
# -----------------------
|
||||
# TEXT
|
||||
# -----------------------
|
||||
def handle_text(ds, field, ratio):
|
||||
global written
|
||||
target = int(TARGET_SAMPLES * ratio)
|
||||
start = written
|
||||
|
||||
for x in ds:
|
||||
if written - start >= target:
|
||||
break
|
||||
|
||||
process_text(x.get(field))
|
||||
|
||||
|
||||
# -----------------------
|
||||
# CODE
|
||||
# -----------------------
|
||||
def handle_code(ds, lang, ratio):
|
||||
global written
|
||||
target = int(TARGET_SAMPLES * ratio)
|
||||
start = written
|
||||
|
||||
for x in ds:
|
||||
if written - start >= target:
|
||||
break
|
||||
|
||||
if x.get("lang") == lang:
|
||||
process_text(x.get("content"))
|
||||
|
||||
|
||||
# =======================
|
||||
# DATASETS (ONLY SAFE ONES)
|
||||
# =======================
|
||||
|
||||
print("chat...")
|
||||
ds = safe_load("teknium/OpenHermes-2.5", split="train", streaming=True)
|
||||
handle_chat(ds, 0.35)
|
||||
|
||||
print("en text...")
|
||||
ds = safe_load("wikitext", "wikitext-103-raw-v1", split="train", streaming=True)
|
||||
handle_text(ds, "text", 0.25)
|
||||
|
||||
print("ru fallback (wiki dump alternative)...")
|
||||
|
||||
# безопасная замена RU:
|
||||
ds = safe_load("wikimedia/wikipedia", "20231101.ru", split="train", streaming=True)
|
||||
handle_text(ds, "text", 0.2)
|
||||
|
||||
print("rust...")
|
||||
ds = safe_load("bigcode/the-stack-smol", split="train", streaming=True)
|
||||
handle_code(ds, "Rust", 0.1)
|
||||
|
||||
print("python...")
|
||||
ds = safe_load("bigcode/the-stack-smol", split="train", streaming=True)
|
||||
handle_code(ds, "Python", 0.1)
|
||||
|
||||
out.close()
|
||||
|
||||
print("written:", written)
|
||||
```
|
||||
56
config.json
Normal file
56
config.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"architectures": [
|
||||
"NemotronHForCausalLM"
|
||||
],
|
||||
"attention_bias": false,
|
||||
"attention_dropout": 0.0,
|
||||
"auto_map": {
|
||||
"AutoConfig": "configuration_nemotron_h.NemotronHConfig",
|
||||
"AutoModelForCausalLM": "modeling_nemotron_h.NemotronHForCausalLM"
|
||||
},
|
||||
"bos_token_id": 1,
|
||||
"chunk_size": 128,
|
||||
"conv_kernel": 4,
|
||||
"eos_token_id": 12,
|
||||
"head_dim": 128,
|
||||
"hidden_dropout": 0.0,
|
||||
"hidden_size": 4480,
|
||||
"hybrid_override_pattern": "M-M-M-MM-M-M-M*-M-M-M*-M-M-M-M*-M-M-M-M*-M-MM-M-M-M-M-M-",
|
||||
"initializer_range": 0.02,
|
||||
"intermediate_size": 15680,
|
||||
"layer_norm_epsilon": 1e-05,
|
||||
"mamba_head_dim": 80,
|
||||
"mamba_hidden_act": "silu",
|
||||
"mamba_num_groups": 8,
|
||||
"mamba_num_heads": 128,
|
||||
"mamba_proj_bias": false,
|
||||
"mamba_state_dim": 128,
|
||||
"max_position_embeddings": 131072,
|
||||
"mlp_bias": false,
|
||||
"mlp_hidden_act": "relu2",
|
||||
"model_type": "nemotron_h",
|
||||
"n_groups": 8,
|
||||
"num_attention_heads": 40,
|
||||
"num_hidden_layers": 56,
|
||||
"num_key_value_heads": 8,
|
||||
"num_logits_to_keep": 1,
|
||||
"num_query_groups": 8,
|
||||
"pad_token_id": 0,
|
||||
"rescale_prenorm_residual": true,
|
||||
"residual_in_fp32": false,
|
||||
"rms_norm_eps": 1e-05,
|
||||
"sliding_window": null,
|
||||
"ssm_state_size": 128,
|
||||
"tie_word_embeddings": false,
|
||||
"time_step_floor": 0.0001,
|
||||
"time_step_max": 0.1,
|
||||
"time_step_min": 0.001,
|
||||
"time_step_rank": 256,
|
||||
"torch_dtype": "bfloat16",
|
||||
"transformers_version": "4.51.3",
|
||||
"use_bias": false,
|
||||
"use_cache": true,
|
||||
"use_conv_bias": true,
|
||||
"use_mamba_kernels": true,
|
||||
"vocab_size": 131072
|
||||
}
|
||||
Reference in New Issue
Block a user