CoolFace
Modelpublic

alchemonaut/QuartetAnemoi-70B-t0.0001

sourceHugging Faceotherupdated 3y agoView on Hugging Face
39likes82downloads
Model Card

<img src=https://huggingface.co/alchemonaut/QuartetAnemoi-70B-t0.0001/resolve/main/anemoi.png>

QuartetAnemoi-70B-t0.0001

A sequential merge using a custom algorithm (NearSwap) of:

<br/>

In our testing, this model seems like a storyteller, as might be expected, but the changes from this merge are extremely soft. We were impressed that, unlike most models, at the end of a story it did not often use cliches such as "In the end", "And so", "beacon of hope", etc.

<br/> <br/>

Quants

Most of the popular quant formats are available now, thanks to community efforts.

TypeMiscAuthor
GGUFalchemonaut
GGUFiMatNexesenex
GGUFiMatmradermacher
GGUFFull Setmradermacher
exl22.5bpwllmixer
exl23.75bpwaltomek
exl24.0bpwllmixer
exl24.6bpwalchemonaut
exl26.0bpwllmixer
AWQtachyphylaxis

<br/> <br/>

NearSwap Algorithm

NearSwap retains most of the weights of the base model (Miqu), but when a weight is similar between the two, it is interpolated to the secondary model value. A parameter t specifies the sameness threshold. When the distance between two values is below t, the weight from the secondary model is used.

This version of the model uses t = 0.0001. At this t, about 0.8% of weights are fully switched to the secondary model during each pass. Model quality rapidly degrades above t = 0.0025:

  • —t = 0.0001 (~0.8% full swap): This model
  • —t = 0.0003 (~2% full swap)
  • —t = 0.001 (~10% full swap): BoreanGale-70B
  • —t = 0.0025 (~18% full swap): Generates one paragraph okay, but then reverts to garbage
  • —t = 0.005 (~35% full swap): Garbage; semi-related word lists
  • —t = 0.01 (~55% full swap): Garbage; pseudorandom tokens output

For QuartetAnemoi-70B-t0.0001, the three secondary models were each merged sequentially with t = 0.0001.

NearSwap implementation:

    t: Union[float, np.ndarray],
    v0: Union[np.ndarray, torch.Tensor],
    v1: Union[np.ndarray, torch.Tensor],
...
    lweight = numpy.absolute(v0-v1)
    lweight = t / lweight
    lweight = numpy.nan_to_num(lweight, nan=1.0, posinf=1.0, neginf=1.0)
    numpy.clip(lweight, a_min=0.0, a_max=1.0, out=lweight)
    res = lerp(lweight,v0,v1)

<br/> <br/>

License and Use

Since the ultimate origin of Miqu is at this time unknown beyond speculation, this model is for noncommercial research use only.

<br/> <br/>

Open LLM Leaderboard Evaluation Results

Detailed results can be found here

MetricValue
Avg.76.86
AI2 Reasoning Challenge (25-Shot)73.38
HellaSwag (10-Shot)88.9
MMLU (5-Shot)75.42
TruthfulQA (0-shot)69.53
Winogrande (5-shot)85.32
GSM8k (5-shot)68.61