LilyWinter's picture
Update README.md
392d963 verified
|
raw
history blame
No virus
2.28 kB
metadata
tags:
  - merge
license: other

QuartetAnemoi-70B-t0.0001

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


In our testing, this model seems like a storyteller, as might be expected. 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.



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)


License and Use

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