v000000's picture
Update README.md
1fc3d4b verified
metadata
base_model:
  - v000000/HaloMaidRP-v1.32-15B-Ruby
  - v000000/HaloMaidRP-v1.32-15B-Sapphire
library_name: transformers
tags:
  - mergekit
  - merge
  - llama
Semi-Healed Llama-3 15B Frankenmerge

Llama3-15B-HaloMaidRP-v1.33-8K

image/jpeg

Thanks mradermacher for the quants!

Quants:

This is the third iteration "Emerald" of the final four and the one I liked the most. It has had limited testing though, but seems relatively decent. Better than 8B at least.

Findings: o_proj and down_proj can be stolen from Aethora-v2 so new 15B frankenmerges don't seem to really need finetuning to "heal" the layers, though it has a big influence on the output so it's slightly censored in one-shot.

Samplers

I found success with:
temperature 0.9-1.2
min_p 0.08
tfs 0.97
smoothing_factor 0.3
smoothing_curve 1.1

Nymeria preset (more coherent):
temp 0.9
top_k 30
top_p 0.75
min_p 0.2
rep_pen 1.1
smooth_factor 0.25
smooth_curve 1

merge

This is a merge of pre-trained language models created using mergekit.

Merge Details

Merge Method

This model was merged using an iterative merging process. (Probably ~10 models got thrown away in the process.)

Models Merged

The following models were included in the merge:

Configuration

The following YAML configuration was used to produce this model:

Recipe

#1. Take a collection of RP and Storywriter 8b models and merge them.

dtype: float32
merge_method: linear
      weight: 0.15
    parameters:
  - model: tokyotech-llm/Llama-3-Swallow-8B-v0.1
      weight: 0.4
    parameters:
  - model: NeverSleep/Llama-3-Lumimaid-8B-v0.1-OAS
      weight: 0.1
    parameters:
  - model: maldv/llama-3-fantasy-writer-8b
      weight: 0.6
    parameters:
  - model: Nitral-AI/Hathor_Respawn-L3-8B-v0.8
 
#2. Use task-arithmetic to learn the vector directions from the RP-Mix onto Llama-3-SPPO which is the smartest 8B model imo, this way we can preserve Meta's multi-bullion dollar tuning.

models:
dtype: float32
    normalize: false
parameters:
base_model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3
merge_method: task_arithmetic
      weight: 0.35
    parameters:
  - model: rpmix-part1
      weight: 1.0
    parameters:
  - model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3
  
#2,5. Apply abliteration to the previous model

models:
dtype: float32
merge_method: linear
      weight: 1.0
    parameters:
  - model: sppo-rpmix-part2+grimjim/Llama-3-Instruct-abliteration-LoRA-8B
  
#3. Create an abliterated version of Stheno3.2-8B as we will use this in the 15B frankenmerge.

models:
dtype: float32
merge_method: linear
      weight: 1.0
    parameters:
  - model: Sao10K/L3-8B-Stheno-v3.2+grimjim/Llama-3-Instruct-abliteration-LoRA-8B
  
#4. Make an inverted version of a elinas Llama-3-15B Frankenmerge with the previous models.

models:
    model: v000000/L3-8B-Stheno-v3.2-abliterated
  - layer_range: [24, 32]
- sources:
    model: v000000/SwallowMaid-8B-L3-SPPO-abliterated
  - layer_range: [8, 24]
- sources:
    parameters:
    model: v000000/L3-8B-Stheno-v3.2-abliterated
  - layer_range: [8, 24]
- sources:
    model: v000000/SwallowMaid-8B-L3-SPPO-abliterated
  - layer_range: [0, 24]
- sources:
slices:

#5. Make an non-inverted version of a elinas Llama-3-15B Frankenmerge with the previous models.
merge_method: passthrough
dtype: float32
    model: v000000/SwallowMaid-8B-L3-SPPO-abliterated
  - layer_range: [24, 32]
- sources:
    model: v000000/L3-8B-Stheno-v3.2-abliterated
  - layer_range: [8, 24]
- sources:
    model: v000000/SwallowMaid-8B-L3-SPPO-abliterated
  - layer_range: [8, 24]
- sources:
    model: v000000/L3-8B-Stheno-v3.2-abliterated
  - layer_range: [0, 24]
- sources:
slices:

#6. Test the previous two models and determine which is better in the output/input stage and which is best in the middle and we slerp them in a v-shape.

merge_method: passthrough
dtype: float32
  t: [0, 0.5, 1, 0.5, 0]
parameters:
dtype: float32
base_model: v000000/Sthalomaid-15B-abliterated
merge_method: slerp
  - model: v000000/Sthalomaid-15B-Inverted-abliterated
  - model: v000000/Sthalomaid-15B-abliterated
  
#7. Apply Blackroot Lora in a model_stock merge of the different models so far

models:
dtype: float32
merge_method: model_stock
base_model: v000000/Sthalomaid-V-15B-abliterated
  - model: v000000/Sthalomaid-15B-Inverted-abliterated+Blackroot/Llama-3-8B-Abomination-LORA
  - model: v000000/Sthalomaid-15B-abliterated+Blackroot/Llama-3-8B-Abomination-LORA
  - model: v000000/Sthalomaid-V-15B-abliterated+Blackroot/Llama-3-8B-Abomination-LORA #seems to work on 15b
  - model: v000000/Sthalomaid-15B-Inverted-abliterated
  - model: v000000/Sthalomaid-15B-abliterated
  - model: v000000/Sthalomaid-V-15B-abliterated
 
#7. Create another 15B frankenmerge from just SPPO and abiterate it, this is so we can merge in a smarter model.

models:
dtype: float32
merge_method: passthrough
slices:
- sources:
  - layer_range: [0, 24]
    model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3+grimjim/Llama-3-Instruct-abliteration-LoRA-8B
- sources:
  - layer_range: [8, 24]
    model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3+grimjim/Llama-3-Instruct-abliteration-LoRA-8B
    parameters:
- sources:
  - layer_range: [8, 24]
    model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3+grimjim/Llama-3-Instruct-abliteration-LoRA-8B
- sources:
  - layer_range: [24, 32]
    model: UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3+grimjim/Llama-3-Instruct-abliteration-LoRA-8B

#8. Learn vectors from our previous blackroot model_stock model to smarter SPPO-Iter model to preserve RP capabilities.

models:
  - model: v000000/HaloMaidRP-V-15B-Blackroot-v0.1
    parameters:
      weight: 1.3
merge_method: task_arithmetic
base_model: v000000/Llama-3-Instruct-15B-SPPO-Iter3-abliterated
parameters:
  normalize: false

#9. Merge the blackroot model_stock-15B and SPPO-15B models together with a smooth gradient.

dtype: float32
slices:
  - sources:
      - model: v000000/HaloMaidRP-V-15B-Blackroot-v0.1
        layer_range: [0, 64]
      - model: v000000/HaloMaidRP-V-15B-Blackroot-v0.223
        layer_range: [0, 64]
merge_method: slerp
base_model: v000000/HaloMaidRP-V-15B-Blackroot-v0.223
parameters:
  t:
    - filter: self_attn
      value: [0, 0.5, 0.3, 0.7, 1, 0.1, 0.6, 0.3, 0.8, 0.5]
    - filter: mlp
      value: [1, 0.5, 0.7, 0.3, 0, 0.3, 0.4, 0.7, 0.2, 0.5]
    - value: 0.5
dtype: bfloat16 #Oops accidentally swtich to half precision do this also very important

#10. Heal the layers, o_proj and down_proj seems to be the main tensors that determine adaptation to a new architecture, so we can steal them from an already finetuned 15B, 
#this way we don't need to finetune our new frankenmerge at all to have full performance. Why reinvent the wheel?
#sapphire
models:
  - model: v000000/HaloMaidRP1_component
merge_method: slerp
base_model: ZeusLabs/L3-Aethora-15B-V2
parameters:
  t:
    - filter: o_proj
      value: 0
    - filter: down_proj
      value: 0
    - value: 1
dtype: bfloat16

#11. Go back to an earlier checkpoint that had interesting results with being very depraved before the blackroot model_stock merge and do the same as (10.) to heal it.
#ruby
models:
  - model: v000000/component____HaloMaidRP-V
merge_method: slerp
base_model: ZeusLabs/L3-Aethora-15B-V2
parameters:
  t:
    - filter: o_proj
      value: 0
    - filter: down_proj
      value: 0
    - value: 1
dtype: bfloat16

#12. Then we merge these two together to get a semi-depraved smart model.
#emerald (this)
slices:
  - sources:
      - model: v000000/HaloMaidRP-v1.32-15B-Sapphire
        layer_range: [0, 64]
      - model: v000000/HaloMaidRP-v1.32-15B-Ruby
        layer_range: [0, 64]
merge_method: slerp
base_model: v000000/HaloMaidRP-v1.32-15B-Sapphire
parameters:
  t:
    - filter: self_attn
      value: [0.1, 0.6, 0.3, 0.8, 0.5]
    - filter: mlp
      value: [0.9, 0.4, 0.7, 0.2, 0.5]
    - value: 0.5
dtype: bfloat16

#sapphire version is somewhat better at keeping formatting and is smarter overall, but its very bland imo

Prompt Template

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

{system_prompt}<|eot_id|><|start_header_id|>user<|end_header_id|>

{input}<|eot_id|><|start_header_id|>assistant<|end_header_id|>

{output}<|eot_id|>

uncensored=no