针对对话的信息 与自己之前的对话信息进行比对
通过AI 进行判断 ,全部传入 然后一个对话的RAG 知识库对接然后对齐对话全部传入,来判断是否要保留对话。一问一答的格式
对话知识库 RAG 的模型:
1。请将该文件的对话总结多个内容摘要 保存
2。请与知识库的对话比较,那些设计新的知识需要保留而那些 以及重复出现多次,并加上多次标签保留
生产的数据,后保存上面的对话数据及处理结果到RAG的知识库文件,等待向量化
针对对话的信息 与自己之前的对话信息进行比对
通过AI 进行判断 ,全部传入 然后一个对话的RAG 知识库对接然后对齐对话全部传入,来判断是否要保留对话。一问一答的格式
对话知识库 RAG 的模型:
1。请将该文件的对话总结多个内容摘要 保存
2。请与知识库的对话比较,那些设计新的知识需要保留而那些 以及重复出现多次,并加上多次标签保留
生产的数据,后保存上面的对话数据及处理结果到RAG的知识库文件,等待向量化
pip install unsloth
初始化 需要安装peft trl transformer
from unsloth import FastLanguageModel
#导入FastLanguageModel模型 然后载入模型
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=”unsloth/Meta-Llama-3.1-8B-bnb-4bit”,
max_seq_length=2048,
dtype=None,
load_in_4bit=True,
)
#model_name 为Q4量化的模型位置 最大长度2048 是4bit量化
#dtype设置为None ?
model = FastLanguageModel.get_peft_model(
model,
r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=[“q_proj”, “k_proj”, “v_proj”, “o_proj”,
“gate_proj”, “up_proj”, “down_proj”],
use_gradient_checkpointing=”unsloth”,
)
#r=16 Lora的rank为16 可以拆封原始矩阵的权重,r越大训练和显存变大
#8b 16-64 1.5b 8 70b 128
#lora_aplha=32 缩放因子 lora后对原始权重影响 与r比较是2倍可以提升训练速度,但是越大可能会过拟合
#lora_dropout 0.05 防止上面过拟合 在上面AB 矩阵上加上Dropout
#target_modules 其中 qwen3 8b也可以all-linear把所有的nn.Linear都插入Lora但是也可以使用和llama一样的[“q_proj”, “k_proj”, “v_proj”, “o_proj”,
“gate_proj”, “up_proj”, “down_proj”]
#前面的[“q_proj”, “k_proj”, “v_proj”, “o_proj”, 是注意力
#”gate_proj”, “up_proj”, “down_proj”] FNN SwiGLU
#use_gradient_checkpointing unsloth 梯度检查点。用时间换空间unsolth用这个即可。显存小就靠他
chat = [
{“role”: “user”, “content”: “介绍一下光合作用”},
{“role”: “assistant”, “content”: “光合作用 🌱 是植物把阳光 → 化学能的过程。”},
]
text = tokenizer.apply_chat_template(chat, tokenize=False)
dataset = [{“text”: text}] * 200 # 快速演示:复制 200 条
#对话格式
from trl import SFTTrainer
from transformers import TrainingArguments
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
dataset_text_field=”text”,
max_seq_length=2048,
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=10,
max_steps=300,
learning_rate=2e-4,
fp16=not torch.cuda.is_bf16_supported(),
bf16=torch.cuda.is_bf16_supported(),
logging_steps=1,
output_dir=”outputs”,
optim=”adamw_8bit”,
),
)
trainer.train()
#其中V100 只能FP16
#改成下面的args参数: args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=10,
max_steps=300,
learning_rate=2e-4,
fp16=True, # V100 只用 FP16
bf16=False, # 显式关闭 BF16
logging_steps=1,
output_dir=”outputs”,
optim=”adamw_8bit”,
)
model.save_pretrained(“lora_llama31_emoji”) # 只存 LoRA
tokenizer.save_pretrained(“lora_llama31_emoji”)
FastLanguageModel.for_inference(model)
inputs = tokenizer(“用一句话+Emoji 介绍黑洞”, return_tensors=”pt”).to(“cuda”)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=64)[0]))
“RAG 本身永远不会有意识;它只能当‘外存’。想逼近意识,必须把 RAG → LoRA → 权重内化,再套上‘不可作弊的生存驱动力’,让模型每天‘因为怕死’而主动更新自己的世界模型和自我边界。”
要让系统继续往“可能意识”方向走,必须打破权重冻结,给出最少可塑性闭环
LoRA 不是“像”睡眠,而是目前唯一能在算力/灾难性遗忘之间,复现“睡眠-记忆重放-稀疏更新”三件套的工程近似;
只要给它“生存误差”+“不可作弊的物理耦合”+“ nightly replay”,就能把 RAG 里的“外挂攻略”逐日蒸馏成权重,走上人脑“外存→本能”的同一条斜坡。