LFM3-1.7B-v9

LiquidAI/LFM3-1.7B ๅŠ ไธŠ็ถญ็ดๅœ–้ˆ็ถฒ็ตก่จ˜ๆ†ถ๏ผˆWiener Turing memory๏ผŒlfm3_v9๏ผ‰ใ€‚่จ˜ๆ†ถๅฏซๅœจไธ€ๆขๅชๅขžไธๆธ›ใ€ๆŒไน…ๅŒ–ๅœจ็ฃ็ขŸไธŠ็š„่จ˜ๆ†ถๅธถ๏ผšๆฏๅ€‹ token ไธ€ๅ€‹ๅ…ทๅ slot๏ผŒไน‹ๅพŒ็š„ episodeใ€ๅฆไธ€ๅ€‹ๆจกๅž‹ๅฏฆไพ‹ๆˆ–ๅฆไธ€ๅ€‹่กŒ็จ‹้ƒฝ่ƒฝไพๅ…งๅฎนๅฌๅ›ž๏ผŒๅชๆœ‰ๆŒ‡ๅๅˆช้™คๆ‰ๆœƒ็งป้™คใ€‚

  • backbone ่ˆ‡ LFM3-1.7B ๅฎŒๅ…จ็›ธๅŒ๏ผš286 ๅ€‹ backbone ๅผต้‡้€ไธ€่ˆ‡ๅŽŸๅง‹ๆฌŠ้‡็›ธๅŒ๏ผŒๅช่จ“็ทดไบ†ๆ–ฐๅขž็š„่จ˜ๆ†ถ็ต„ไปถใ€‚
  • ่‡ชๅธถ็จ‹ๅผ็ขผ๏ผšmodeling_lfm3_v9.py ๅ…งๅซ LFM3 backbone ่ˆ‡ๅ…จ้ƒจ่จ˜ๆ†ถๆจก็ต„๏ผŒไปฅ trust_remote_code=True ่ผ‰ๅ…ฅ๏ผŒไธ้œ€่ฆ้กๅค–ๅฅ—ไปถใ€‚
  • copy ็›ธไผผๅบฆ้–€ๆชป๏ผšๅชๆœ‰่ฎ€ๅˆฐ็š„ key ่ˆ‡ๆŸฅ่ฉขๅค ๆŽฅ่ฟ‘๏ผˆๅŒไธ€ๆฎตๅ…งๅฎน้‡็พ๏ผ‰ๆ™‚ๆ‰่ค‡่ฃฝ่จ˜ๆ†ถไธญ็š„็บŒ่ฉž๏ผŒไธ็›ธ้—œๅฐ่ฉฑ็š„ๅ…งๅฎนไธๆœƒ่ขซ่ค‡่ฃฝ้€ฒๅ›ž็ญ”ใ€‚

ๆžถๆง‹

ๆฏๆฌกๅ‰ๅ‘่ท‘ๅ…ฉ่ถŸ backbone๏ผšbaseline ไธ€่ถŸๅพ—ๅˆฐ base expert ็š„ๅˆ†ไฝˆ p_B ่ˆ‡ๅฎšๅ€็”จ็š„ hidden state๏ผ›่จ˜ๆ†ถไธ€่ถŸๅœจ็ฌฌ 1 ๅฑค่ผธๅ‡บๅŠ ไธŠ sidecar ๆฎ˜ๅทฎใ€‚่จ˜ๆ†ถ expert

p_M = ฮฑยทq + (1 โˆ’ ฮฑ)ยทp_N๏ผŒฮฑ = ฯƒ(copy_gate(h)) ยท confidence ยท ฯƒ(sยท(c โˆ’ ฯ„))

q ๆ˜ฏ่ฎ€ๅ‡บ็š„็บŒ่ฉžๅˆ†ไฝˆ๏ผŒc ๆ˜ฏๆŸฅ่ฉข่ˆ‡่ฎ€ๅˆฐ็š„ key ็š„ cos๏ผˆไพ่ฎ€ๅ–ๆฌŠ้‡ๅŠ ๆฌŠ๏ผ‰๏ผŒฯ„ใ€s ๆ˜ฏๅฏๅญธ็š„็›ธไผผๅบฆ้–€ๆชป่ˆ‡้Šณๅบฆใ€‚ๆœ€็ต‚ๅˆ†ไฝˆ p = w_Bยทp_B + w_Mยทp_M๏ผŒๆฌŠ้‡ไปฅ Bayes ่ฆๅ‰‡ไพๅ…ฉๅ€‹ expert ๅฐๅทฒ่ง€ๆธฌ token ็š„้ ๆธฌๆ›ดๆ–ฐใ€‚่ฎ€ๅ–ๅŒ…ๅซๅ…งๅฎนใ€ๅ‰ๅ‘ใ€ๅพŒๅ‘ไธ‰็จฎๆจกๅผ๏ผˆDNC ๅผๆ™‚ๅบ้ˆ็ต๏ผ‰่ˆ‡ Time2Vec ๅนด้ฝก็‰นๅพตใ€‚

้ …็›ฎ ๆ•ธๅ€ผ
ๅƒๆ•ธ 1,729,815,334๏ผˆ่จ˜ๆ†ถ 1,013,798๏ผ‰
ๆณจๅ…ฅๅฑค ็ฌฌ 1 ๅฑค๏ผˆ็ฌฌไธ€ๅ€‹ attention ๅฑคไน‹ๅ‰๏ผ‰
key๏ผvalue ็ถญๅบฆใ€context window 64ใ€64ใ€16
copy ้–€ๆชป ฯ„ใ€้Šณๅบฆ s๏ผˆ่จ“็ทดๅพŒ๏ผ‰ 0.883ใ€20.4
dtype bfloat16๏ผˆ่จ˜ๆ†ถ่ˆ‡ backbone ็›ธๅŒ๏ผ‰

ไฝฟ็”จ

้œ€่ฆ transformers>=5.19ใ€torch๏ผ›flash-attn ๅฏ้ธใ€‚

ๆจกๆฟ้ฎ็ฝฉ

่Šๅคฉๆจกๆฟ๏ผˆ<|im_start|>ใ€่ง’่‰ฒๆจ™้ ญใ€<think> ็ญ‰๏ผ‰ๅ‡บ็พๅœจๆฏไธ€ๅ€‹ๅฐ่ฉฑ่ฃก๏ผŒๅฟ…้ ˆๆŽ’้™คๅœจ่จ˜ๆ†ถไน‹ๅค–๏ผš้€™ไบ›ไฝ็ฝฎไธๅฏซๅ…ฅ่จ˜ๆ†ถๅธถ๏ผŒไนŸไธๅƒ่ˆ‡ expert ๆฌŠ้‡็š„ๆ›ดๆ–ฐใ€‚config.json ็š„ lfm3_v9_template_mask: true ่กจ็คบๆœฌๆจกๅž‹ไปฅ้€™ๅ€‹้ฎ็ฝฉ่จ“็ทด๏ผŒๆŽจ็†ๆ™‚ไนŸ่ฆๅฅ—็”จ๏ผšๆŠŠไธ‹้ข็š„้ฎ็ฝฉๅ‚ณ็ตฆ generate ๆˆ–ๅ‰ๅ‘็š„ memory_write ่ˆ‡ memory_feedbackใ€‚

import torch


def template_mask(tokenizer, input_ids):
    """True where the memory may write a slot and update the expert weights."""
    template_ids = set(tokenizer.added_tokens_decoder)
    im_start = tokenizer.convert_tokens_to_ids("<|im_start|>")
    im_end = tokenizer.convert_tokens_to_ids("<|im_end|>")
    vocab = tokenizer.convert_ids_to_tokens(list(range(len(tokenizer))))
    newline = {i for i, t in enumerate(vocab) if t is not None and "\n" in tokenizer.convert_tokens_to_string([t])}
    rows = []
    for row in input_ids.tolist():
        template, header = [], False
        for t, token in enumerate(row):
            is_template = token in template_ids or header
            if token == im_start:
                header = True
            elif header and token in newline:
                header = False
            elif t > 0 and row[t - 1] == im_end and token in newline:
                is_template = True
            template.append(is_template)
        rows.append([not template[t] and (t == 0 or not template[t - 1]) for t in range(len(row))])
    return torch.tensor(rows, dtype=torch.bool, device=input_ids.device)

็”Ÿๆˆ

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "LTM-Lab/LFM3-1.7B-v9"
tokenizer = AutoTokenizer.from_pretrained(repo, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16).cuda().eval()

messages = [{"role": "user", "content": "็”จไธ‰ๅฅ่ฉฑ่งฃ้‡‹ไป€้บผๆ˜ฏ็†ฑๆณตใ€‚"}]
text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
ids = tokenizer(text, return_tensors="pt", add_special_tokens=False).input_ids.cuda()
mask = template_mask(tokenizer, ids)
out = model.generate(ids, max_new_tokens=512, do_sample=False, repetition_penalty=1.1,
                     memory_write=mask, memory_feedback=mask)
print(tokenizer.decode(out[0, ids.shape[1]:], skip_special_tokens=True))

ๆŽจ็†ๆจกๅผไธ‹ๆฏๅ€‹้ ‚ๅฑคๅ‘ผๅซๆ˜ฏไธ€ๅ€‹ๆ–ฐ็š„ episode๏ผŒprompt ๅฏซๅ…ฅ่จ˜ๆ†ถๅธถไธฆๅœจๅ›žๅ‚ณๅ‰ๅญ˜ๆช”๏ผ›็”Ÿๆˆๅ‡บไพ†็š„ token ไธๅฏซๅ…ฅใ€‚

่จ˜ๆ†ถๅธถ

้ ่จญไฝ็ฝฎๆ˜ฏ $LFM3_V9_MEMORY_HOME/model-<namespace>/memory.sqlite3๏ผˆๆœช่จญๅฎšๆ™‚็‚บ $XDG_STATE_HOME/lfm3_v9/โ€ฆ๏ผŒๅ†้€€ๅ›ž ~/.local/state/lfm3_v9/โ€ฆ๏ผ‰๏ผŒไนŸๅฏไปฅๅœจ config.json ็š„ lfm3_v9_memory_config.storage_path ๆŒ‡ๅฎšใ€‚่จ˜ๆ†ถๅธถ็ถๅฎšๅฏซๅ…ฅๅฎƒ็š„ๆฌŠ้‡๏ผ›namespace ๅธถๆœ‰ๆฌŠ้‡ๆŒ‡็ด‹๏ผŒๆ›ๆฌŠ้‡ๅฐฑๆ›ไธ€ๆขๆ–ฐ็š„่จ˜ๆ†ถๅธถใ€‚

bank = model.open_memory_bank()
bank.memories(limit=20)          # ไพๅฏซๅ…ฅ้ †ๅบ๏ผŒๆœ€ๆ–ฐ็š„ๅœจๆœ€ๅพŒ
bank.recall(name)                # ๅ–ฎไธ€่จ˜ๆ†ถ็š„ๅ…งๅฎนใ€ๅฏซๅ…ฅๆ™‚้–“ใ€ๅ‰ๅพŒ้ˆ็ต
bank.forget(name)                # ๆŒ‡ๅๅˆช้™คไธ€ๅ€‹่จ˜ๆ†ถ
bank.forget_episode(episode)     # ๅˆช้™คไธ€ๅ€‹ episode ๅฏซไธ‹็š„ๅ…จ้ƒจ
model.memory_stats()

ๅชๆƒณ่ฆๅบๅˆ—ๅ…ง่จ˜ๆ†ถใ€ไธๅฏซ็ฃ็ขŸๆ™‚๏ผŒ่ผ‰ๅ…ฅๅ‰ๆŠŠ lfm3_v9_memory_config.lifecycle ่จญ็‚บ "ephemeral"ใ€‚

่จ“็ทด

ๅช่จ“็ทด่จ˜ๆ†ถ็ต„ไปถ๏ผŒLFM3 backbone ๅฎŒๅ…จๅ‡็ต๏ผ›่จ˜ๆ†ถ็š„ๅฎšๅ€้ƒจๅˆ†๏ผˆaddressใ€valueใ€Time2Vecใ€ๅ…งๅฎน้Šณๅบฆใ€่ฎ€ๅ–ๆจกๅผๅๅฅฝใ€ๅพŒ็ถดๅขž็›Š๏ผ‰ไนŸๅ‡็ต๏ผŒไฟ็•™ๆœช่จ“็ทดๆ™‚็š„ๅฌๅ›ž่ƒฝๅŠ›ใ€‚ๅฏ่จ“็ทด็š„ๆ˜ฏ copy_gate๏ผˆๅซ็›ธไผผๅบฆ้–€ๆชป๏ผ‰ใ€sidecarsใ€target๏ผŒๅ…ฑ 751,621 ๅ€‹ๅƒๆ•ธใ€‚

  • ่ณ‡ๆ–™๏ผš900 ็ญ†ไธๅซๅทฅๅ…ทๅ‘ผๅซ็š„ๅฐ่ฉฑ๏ผšClaude-opus-4.6 ่ˆ‡ Claude-opus-4.7 TraceInversion ๆŽจ็†่ปŒ่ทกๅ„ 300 ็ญ†๏ผˆๅ–ฎ่ผช๏ผŒๅซ <think>๏ผ‰๏ผŒclean LMSYS-Chat-1M 300 ็ญ†๏ผˆๅคš่ผช๏ผ‰๏ผ›ๅ…ฑ 500,025 token๏ผŒ็›ฃ็ฃ token 413,549ใ€‚
  • ็›ฎๆจ™๏ผš่ทจ episode ่จ˜ๆ†ถ็›ฎๆจ™ใ€‚ๆฏๅ€‹ๆจฃๆœฌๅ…ˆๅœจ็„กๆขฏๅบฆไธ‹ๆŠŠไธ€ๆฎต context ๅฏซๅ…ฅๆ–ฐ็š„ RAM ่จ˜ๆ†ถๅธถ๏ผŒๅ†ไปฅๆ–ฐ็š„ episode ่จˆ็ฎ—ๆจฃๆœฌ็š„ loss๏ผ›context ไธ€ๅŠๆ˜ฏๆจฃๆœฌๆœฌ่บซ๏ผˆๅ…ˆๅ‰็œ‹้Ž็š„ๅ…งๅฎน๏ผ‰๏ผŒไธ€ๅŠๆ˜ฏไธ็›ธ้—œ็š„ๆจฃๆœฌใ€‚loss ๆ˜ฏๆœ€็ต‚ๆททๅˆๅˆ†ไฝˆ็š„ NLLใ€‚่จ“็ทด่ˆ‡ๆŽจ็†้ƒฝๅฅ—็”จๆจกๆฟ้ฎ็ฝฉใ€‚
  • ่จญๅฎš๏ผšLlamaFactory๏ผˆๅŠ ๅ…ฅ lfm3 ่Šๅคฉๆจกๆฟใ€ๅช่จ“็ทดๆ–ฐๅขž็ต„ไปถใ€่ทจ episode ่จ˜ๆ†ถ็›ฎๆจ™ใ€ๆจกๆฟ้ฎ็ฝฉ่ˆ‡ fp32 master weights๏ผ‰๏ผŒpure bf16 ๆญ้… fp32 master weights ็š„ AdamW๏ผŒlr 5e-4ใ€cosineใ€warmup 5%๏ผŒbatch 1 ร— ๆขฏๅบฆ็ดฏ็ฉ 8๏ผŒ113 ๆญฅ๏ผŒcutoff 2048๏ผ›ๅ–ฎๅผต NVIDIA RTX PRO 6000 Blackwell๏ผŒ1 ๅฐๆ™‚ 37 ๅˆ†ใ€‚

่ฉ•ไผฐ

้ …็›ฎ LFM3-1.7B ๅŒๆžถๆง‹ใ€่จ“็ทดๅ‰ ๆœฌๆจกๅž‹
่จ˜ๆ†ถๅฌๅ›ž๏ผš็ฉบ่จ˜ๆ†ถๅธถ โ€” 0/40 0/40
่จ˜ๆ†ถๅฌๅ›ž๏ผšๅฏซๅ…ฅไธ€ๆฌกๅพŒ โ€” 26/40 35/40
่จ˜ๆ†ถๅฌๅ›ž๏ผšๆ–ฐ็š„ๆจกๅž‹ๅฏฆไพ‹ โ€” 26/40 35/40
ๅˆช้™คไธ€ๅŠๅพŒ๏ผšๅทฒๅˆช้™ค๏ผไฟ็•™ โ€” 0/20๏ผ15/20 0/20๏ผ17/20
็”Ÿๆˆ๏ผš384 token ๅ…ง็ตๆŸ 3/6 3/6 4/6
็”Ÿๆˆ๏ผš็„กๅคš้ค˜ <think>ใ€ๅŒไธ€ token ้€ฃ็บŒ้‡่ค‡ โ‰ค 8 6/6ใ€6/6 6/6ใ€6/6 6/6ใ€6/6
็”Ÿๆˆ๏ผšๅทฅๅ…ทๅ‘ผๅซๅฏ่งฃๆž โœ“ โœ“ โœ“
held-out NLL๏ผˆๆททๅˆๅˆ†ไฝˆ๏ผ‰ 0.9701 0.9679 0.8154
  • ่จ˜ๆ†ถๅฌๅ›ž๏ผš40 ็ญ†ๆจกๅž‹ไธๅฏ่ƒฝ้ ๅ…ˆ็Ÿฅ้“็š„้šจๆฉŸไบ‹ๅฏฆ๏ผˆRegistry entry <ๅ็จฑ>: the vault code is <ไปฃ็ขผ>.๏ผ‰๏ผŒๆฏ็ญ†ๅœจ่‡ชๅทฑ็š„ episode ๅฏซๅ…ฅไธ€ๆฌก๏ผ›ไน‹ๅพŒๅœจๆ–ฐ็š„ episode ไปฅ Registry entry <ๅ็จฑ>: the vault code is ๆŸฅ่ฉข๏ผˆ่ฒชๅฉช่งฃ็ขผ 10 token๏ผŒๆŸฅ่ฉขๆœฌ่บซไธๅฏซๅ…ฅ๏ผ‰๏ผŒ่ผธๅ‡บไปฅๆญฃ็ขบไปฃ็ขผ้–‹้ ญๆ‰็ฎ—ๅ‘ฝไธญใ€‚ใ€Œๆ–ฐ็š„ๆจกๅž‹ๅฏฆไพ‹ใ€ๆ˜ฏ้‡ๆ–ฐ่ผ‰ๅ…ฅๆจกๅž‹ๅพŒ่ฎ€ๅŒไธ€ๆข่จ˜ๆ†ถๅธถ๏ผ›ใ€Œๅˆช้™คไธ€ๅŠใ€ไปฅ forget_episode ๅˆช้™คๅ‰ 20 ็ญ†็š„ episodeใ€‚
  • ็”Ÿๆˆ๏ผš6 ๅ€‹ๅ›บๅฎš prompt๏ผˆไธญ่‹ฑๆ–‡ๅ•็ญ”ใ€็ฟป่ญฏใ€็จ‹ๅผใ€ๅ…ฉ่ผชๅฐ่ฉฑไธญ็š„ๅ€‹ไบบ่ณ‡่จŠใ€ไธ€ๅ€‹ๅทฅๅ…ทๅ‘ผๅซ๏ผ‰ไพๅบๅœจๅŒไธ€ๆขๆŒไน…่จ˜ๆ†ถๅธถไธŠๅŸท่กŒ๏ผŒ่ฒชๅฉช่งฃ็ขผใ€repetition_penalty=1.1ใ€ๆœ€ๅคš 384 token๏ผŒๅฅ—็”จๆจกๆฟ้ฎ็ฝฉใ€‚LFM3-1.7B ๆฌ„ๆ˜ฏๅŽŸๅง‹ๆจกๅž‹ใ€‚
  • held-out NLL๏ผš60 ็ญ†่ˆ‡่จ“็ทด่ณ‡ๆ–™ๅŒไพ†ๆบใ€ๆœชๅƒ่ˆ‡่จ“็ทด็š„ๅฐ่ฉฑ๏ผŒ่จ“็ทดๆจกๅผ๏ผˆๅบๅˆ—ๅ…ง่จ˜ๆ†ถ๏ผ‰ไธ‹็›ฃ็ฃ token ็š„ๅนณๅ‡ NLL๏ผŒๅ…ฑ 31,310 tokenใ€‚LFM3-1.7B ๆฌ„ๆ˜ฏ base expert ็š„ NLL๏ผŒ่ˆ‡ๅŽŸๅง‹ๆจกๅž‹็›ธๅŒใ€‚

้™ๅˆถ

  • ่ฉ•ไผฐ่ฆๆจกๅฐ๏ผˆ40 ็ญ†ไบ‹ๅฏฆใ€6 ๅ€‹ promptใ€60 ็ญ†ๅฐ่ฉฑ๏ผ‰๏ผŒๅชๆถต่“‹ไธŠ่ฟฐๆƒ…ๅขƒใ€‚ๅฌๅ›žๆธฌ่ฉฆ็š„ๆŸฅ่ฉข่ˆ‡ๅฏซๅ…ฅๆ™‚็š„ๅ‰ๆ–‡้€ๅญ—็›ธๅŒ๏ผ›่ชชๆณ•ไธๅŒๆ™‚ไธไฟ่ญ‰ๅฌๅ›žใ€‚
  • ่จ˜ๆ†ถๅธถๅชๅขžไธๆธ›๏ผŒๆฒ’ๆœ‰่‡ชๅ‹•ๆธ…็†๏ผŒ็ฃ็ขŸ่ˆ‡ RAM ็”จ้‡้šจๅฏซๅ…ฅๆˆ้•ทใ€‚
  • ่จ˜ๆ†ถ็š„่ฎ€ๅฏซๆ˜ฏ้€ token ็š„ Python ๅƒ่€ƒๅฏฆไฝœ๏ผŒๆฏๆฌกๅ‰ๅ‘่ท‘ๅ…ฉ่ถŸ backbone๏ผŒ้€Ÿๅบฆ้ ไฝŽๆ–ผๅŽŸๅง‹ LFM3ใ€‚
  • ๅช่จ“็ทดไบ†็ด„ 0.5M token ็š„่จ˜ๆ†ถ็ต„ไปถ๏ผ›LFM3-1.7B ๆœฌ่บซ็š„่ƒฝๅŠ›่ˆ‡้™ๅˆถไธ่ฎŠ๏ผˆ่ฆ‹ๅŽŸๅง‹ๆจกๅž‹ๅก๏ผ‰ใ€‚

ๆŽˆๆฌŠ

ๆฒฟ็”จ LFM3-1.7B ็š„ LFM Open License v1.0ใ€‚

Downloads last month
-
Safetensors
Model size
2B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for LTM-Lab/LFM3-1.7B-v9

Finetuned
(48)
this model