论文阅读:MiniOneRec

github仓库:https://github.com/AkaliKong/MiniOneRec
技术报告论文:https://arxiv.org/abs/2510.24431

找了一个论文阅读辅助工具:https://www.alphaxiv.org/

代码

https://github.com/AkaliKong/MiniOneRec

SFT在做什么

前置:数据集

代码路径:MiniOneRec/data.py

类Tokenizer:给普通的分词器多包装了一层,可以处理连续的bos/eos的特殊字符串。

SidSFTDataset

多样化的指令
任务:输入用户最近交互过的item列表,预测用户下一个交互的item

SidItemFeatDataset

sid2title或者title2sid任务

FusionSeqRecDataset

带意图识别的商品推荐
代码

代码入口:MiniOneRec/sft.py
1、运行train.py,传入要训练的主干llm即base_model
2、传入SID token,MiniOneRec是传入到了普通tokens中,而非special tokens中。
3、MiniOneRec考虑是否冻结LLM自带的token的emb和各种参数,只训练新传入的SID 的token emb。
4、处理数据集,有三种类型:SidSFTDataset、SidItemFeatDataset、FusionSeqRecDataset。
5、训练

TokenExtender: SID

SID索引示例:MiniOneRec/data/Amazon/index/Industrial_and_Scientific.index.json
是一个json文件,{"0": ["<a_236>", "<b_231>", "<c_226>"], "1": ["<a_42>", "<b_80>", "<c_160>"],...
indices是一个字典,如indices["0"]=["<a_236>", "<b_231>", "<c_226>"]
函数get_new_tokens返回self.new_tokens,就是返回SID的子token集合。【但是代码存在问题,它读取的所有实体的SID的token集合,而不是码本的token集合。但是码本很有可能不是所有索引token都会被利用(码本坍塌之类的),部分没见过的实体可能会被分配到目前没有分配到的SID索引token上。】

如何只对新token的emb做训练

先冻结所有参数,然后打开embedding参数的required_grad,然后通过register_hook来控制哪些token的梯度保留
embedding_layer.weight[:original_vocab_size].requires_grad=False是不行的,因为不能直接对张量(Tensor)的切片(Slice)设置 requires_grad 属性。
print("Freezing LLM parameters, only training new token embeddings")for param in model.parameters(): param.requires_grad =Falseif sid_index_path and os.path.exists(sid_index_path)and new_tokens: embedding_layer = model.get_input_embeddings()if embedding_layer.weight.shape[0]> original_vocab_size: embedding_layer.weight.requires_grad =Truedefmask_grad(grad):# grad shape: [vocab_size, hidden_dim] grad[:original_vocab_size].zero_()return grad embedding_layer.weight.register_hook(mask_grad)print(f"Unfrozen {len(new_tokens)} new token embeddings "f"(indices {original_vocab_size} to {len(tokenizer)-1})")

RL在做什么

代码入口:MiniOneRec/rl.py

数据集

SidDataset:输入用户历史交互的item SID序列,预测下一个item的SID
RLTitle2SidDataset:title2sid和description2sid任务,返回prompt-completion pairs
RLSeqTitle2SidDataset:输入用户交互序列(带title)来预测下一个item的SID。

奖励模型

SASRec。

MiniOneRec: An Open-Source Framework for Scaling Generative Recommendation

摘要

做了一个框架:SID构建(RQVAE)+SFT(0.5b~7b)+RL(受限解码+混合奖励)
实验证明了llm的Scaling特点,模型越大越好。
从图上来看,对齐SID-text是挺重要的。

在这里插入图片描述

Introduction/Related Work 略

Modeling

框架:
1、tokenizer(RQVAE)
2、LLM-text 对齐(利用llm的世界知识)
3、SFT next token prediction
4、RL(GRPO)

在这里插入图片描述

Task

序列推荐任务
先分词:一个用户u,有一个时间顺序的历史交互商品序列Hu=[i1,i2, …, iT]。每个商品iti_tit​通过RQVAE编码为一个3层的SID {c0it,c1it,c2it}\{c_0^{i_t},c_1^{i_t},c_2^{i_t} \}{c0it​​,c1it​​,c2it​​}。
后训练:LLM πθ\pi_{\theta}πθ​,读取历史序列预测下一个商品。推理的时候k beams search。

Item Tokenization

标准RQVAE
为了避免码本坍缩使用第一个训练batch的k-means中心作为codebook的初始化码本【我直接聚类也很有用】
论文里没写,但是我看代码里有Sinkhorn-Knopp algorithm代码(LC-Rec也做了),这也是缓解码本坍缩的trick。

Align with LLM

对齐LLM世界知识和SID信号。
任务一:序列推荐任务
任务二:对齐SID和文本描述任务。

实际上在github里更新了新技术:
GPR-inspired SFT with Value-Aware Fine-Tuning (VAFT): implements weighted loss based on simulated item value
https://github.com/AkaliKong/MiniOneRec/blob/main/sft_gpr.py
相当于每条样本有一个数值表示好坏,然后对损失做加权。
但是没有实验结果,不知道好不好。
TODO: 做实验比较结果

RL with verifiable rewards (RLVR)

1、混合动态采样(SID空间小,容易采样到相同的SID)
2、稀疏排序信号

混合动态采样采样:
论文说了两个方法。方法1是over-samplef疯狂采,然后构造一个SID样本尽量不重复的集合。方法2是beam search。它的最终方法是beam search,没用上方法1。

稀疏排序信号
用NDCG作为奖励 如果是正确商品,分数再加1

训练

商品描述:Qwen3-Embedding-4B编码
分词器:RQVAE 单卡训练,batchsize=20480,lr=1e-3,epochs=10000
SFT:AdamW,Qwen2.5-Instruct。8卡训练,单卡batchsize=128,10 epochs+early stop(patience=1),lr=3e-4,cosine decay。
RL:GRPO,2epoch,KL权重β不变=0.1,lr=1e-5,batchsize=512
推理:beam search width=16

评估

亚马逊数据集Office+Industrial。hitrate+NDCG作为指标。

1、Scaling:训练+评估损失:模型越大损失越小
2、baseline对比:LLM系列和非LLM系列对比,说明世界知识的重要;Ours和LLM系列对比,说明RL的重要

在这里插入图片描述

Transferablity

SID pattern discovery实验:在Industrial上训在Office上评估
证明RL的有效
没做SFT是因为SFT很容易领域过拟合影响迁移。

在这里插入图片描述

消融

language-SID的重要性:
1、不做language-SID对齐
2、做language-SID对齐,但不SFT 推荐任务,只在RL上做推荐任务
3、SFT只做推荐任务,RL做language-SID对齐(那还做推荐任务吗?没说清楚)

在这里插入图片描述


采样:
1、直接topk
2、采1.5倍budget+筛选
3、beamsearch:最好

奖励设计:
1、01奖励
2、SASRec模型 logits 【效果很差 reward hacking,SASRec协同信息和推荐信息不一致】
3、NDCG

在这里插入图片描述

是否预训练:【还是预训练的好】

在这里插入图片描述

代码

sft_gpr

https://github.com/AkaliKong/MiniOneRec/blob/main/sft_gpr.py
GPR-inspired SFT with Value-Aware Fine-Tuning (VAFT): implements weighted loss based on simulated item value

Read more

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验 * 🎯 核心摘要 * 一、环境准备与系统要求 * 二、安装 Ollama * 方法一:使用官方安装包(最简单,推荐新手) * 方法二:通过命令行安装(可选) * 三、基础使用:快速开始 * 1. 拉取并运行您的第一个模型 * 2. 常用模型管理命令 * 3. 模型选择建议 * 四、进阶应用 * 1. 使用 API 接口 * 2. 使用图形化界面(WebUI) * 五、常见问题与优化 🎯 核心摘要 Ollama 是一个开源工具,可让用户在 Windows 电脑上轻松运行 Llama、DeepSeek 等主流大语言模型。

从拼搭到人工智能:青少年机器人编程的系统化学习攻略

很多家长问我:“孩子今年X岁,对乐高和编程感兴趣,想学机器人,到底该怎么开始?家里正好有一套泺喜的教具,该怎么利用起来?” 作为一位深耕青少儿编程教育的从业者,我想说:机器人编程不是单纯写代码,它是机械工程、电子电路和计算机科学的综合体。 如果学习路径走错了,很容易在某个阶段遇到瓶颈,导致孩子产生畏难情绪而放弃。而泺喜的金属教具,以其高精度、高强度、接近工业级的特点,为孩子提供了一条更硬核、更贴近真实工程的成长路径。 今天,我们就来梳理一套适合青少年、并结合泺喜教具特色的 “机器人编程系统化学习金字塔” ,帮助孩子从零基础一路通关到人工智能。 第一阶段:机械启蒙与动手感知(6-9岁) 关键词:金属构件、螺丝紧固、传动原理 这个年龄段的孩子还处于皮亚杰认知理论中的“前运算阶段”向“具体运算阶段”过渡期。他们无法理解抽象的语法,但能通过双手感知物理世界。 * 学习内容: 1. 机械搭建:使用泺喜的金属构件(梁、板、轴、齿轮、螺丝螺母),学习使用螺丝刀、

深入解析PX4无人机仿真(2) —— Offboard模式下的精准定点控制

1. Offboard模式基础概念 Offboard模式是PX4飞控中一种特殊的飞行模式,它允许外部系统通过MAVLink协议直接控制无人机的位置、速度或姿态。与传统的遥控器控制不同,Offboard模式下飞控完全依赖外部计算机发送的指令,这使得开发者可以实现复杂的自主飞行算法。 我第一次接触Offboard模式时,最大的困惑是它与其他自主飞行模式(如Mission模式)的区别。简单来说,Mission模式是预先规划好航点让无人机自动执行,而Offboard模式则是实时控制,更适合需要动态响应的场景。比如在目标跟踪、编队飞行等应用中,Offboard模式就是最佳选择。 在硬件连接上,Offboard控制通常通过机载计算机(如树莓派)或地面站实现。我常用的方案是使用ROS系统中的MAVROS包作为中间件,它提供了丰富的ROS接口与PX4通信。这里有个容易踩坑的地方:Offboard模式下必须保持2Hz以上的指令发送频率,否则飞控会触发失控保护。曾经有一次测试时因为网络延迟导致指令间隔过长,无人机突然切回Stabilized模式,差点酿成事故。 2. MAVROS通信机制详解

【无人机路径规划】基于粒子群算法PSO融合动态窗口法DWA的无人机三维动态避障路径规划研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百里者,半于九十。 📋📋📋本文内容如下:🎁🎁🎁  ⛳️赠与读者 👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。      或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎 💥第一部分——内容介绍 基于PSO-DWA的无人机三维动态避障路径规划研究 摘要:本文聚焦于无人机在三维复杂环境中的动态避障路径规划问题,提出了一种融合粒子群算法(PSO)与动态窗口法(DWA)的PSO-DWA混合算法。该算法首先利用