Downloads · 30 days
34
1% of all-time downloads
UsernameJustAnother/Nemo-12B-Marlin-v8
Nemo-12B-Marlin-v8 is a text generation model from UsernameJustAnother. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
<img src="https://cdn-uploads.huggingface.co/production/uploads/662c17b252e194d5d436c708/ULeHz0KITPcS0znTN7gDl.png" width="500" height="500" /
Downloads · 30 days
34
1% of all-time downloads
All-time downloads
3.8K
Public
Parameters
12.2B
24.5 GB on disk
Likes
4
Public
Click a slice to open those files.
.safetensors24.5 GB · 100%
From the Hugging Face model README
Standard disclaimer: This is me teaching myself the basics of fine-tuning, with notes extensively borrowed from MN-12B-Celeste-V1.9. Huge props to nothingisreal for posting their process and making me think this was even possible for a little fish like me.
The aim here is for a solid RP/storywriting model that will fit in 16GB of VRAM with a decent amount of context (> 16K).
I pulled v7 because I honestly don't think it's as good as v6, and don't want folks to get the wrong idea that it's better just because the version number is higher. Besides, nothing good ever fires on all seven cylinders.
Props again to Daniel and Unsloth for writing magic that lets me train this on a single A100 with variable (wildly variable) context length. The docker image I used to run Unsloth on runpod is here.
Here's what the train/eval loss looked like:
<img src="https://cdn-uploads.huggingface.co/production/uploads/662c17b252e194d5d436c708/hUKuy7ht_qObuFNDTVEe9.png" width="800"/>I still don't know what makes training loss drop at the end of epoch 1, or why eval loss doesn't drop down to match (it continues to decrease, but slowly). I did say this was experimental, right? If I want to throw more money at this I might try a 3 epoch run just to see what happens.
It was trained with the following settings:
model = FastLanguageModel.get_peft_model(
model,
r = 256,
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",],
lora_alpha = 128, # 128 / sqrt(256) gives a scaling factor of 8
lora_dropout = 0.1, # Supports any, but = 0 is optimized
bias = "none", # Supports any, but = "none" is optimized
# [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
random_state = 3407,
use_rslora = True, # setting the adapter scaling factor to lora_alpha/math.sqrt(r) instead of lora_alpha/r
loftq_config = None, # And LoftQ
)
lr_scheduler_kwargs = {
'min_lr': 0.0000024 # Adjust this value as needed
}
per_device_train_batch_size = 8,
per_device_eval_batch_size = 8,
gradient_accumulation_steps = 4,
eval_accumulation_steps = 4,
prediction_loss_only = True, # When performing evaluation and generating predictions, only returns the loss.
warmup_steps = 50,
num_train_epochs = 2, # For longer training runs! 12 hrs/epoch?
learning_rate = 5e-5,
fp16 = not is_bfloat16_supported(),
bf16 = is_bfloat16_supported(),
fp16_full_eval = True, # stops eval from trying to use fp32
eval_strategy = "steps", # 'no', 'steps', 'epoch'. Don't use this without an eval dataset etc
eval_steps = 50, # is eval_strat is set to 'steps', do every N steps.
logging_steps = 5, # so eval and logging happen on the same schedule
optim = "adamw_8bit", #
weight_decay = 0, # up from 0
lr_scheduler_type = "cosine_with_min_lr", # linear, cosine, cosine_with_min_lr, default linear
lr_scheduler_kwargs = lr_scheduler_kwargs, # needed for cosine_with_min_lr
seed = 3407,
This mistral model was trained 2x faster with Unsloth and Huggingface's TRL library.