ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
note
问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。
研究动机:论文探讨了在SR领域中LLMs的必要性,以及是否存在模型规模和性能之间的不一致性。研究发现LLMs的许多中间层是冗余的。
方法提出:基于上述发现,论文提出了一种名为SLMRec的方法,该方法采用简单的知识蒸馏技术来增强小型语言模型(SLMs)在SR任务上的性能。
实验设计:论文在大规模行业数据集上进行了广泛的实验,以评估减少参数数量对性能的影响,并发现SLMRec模型即使在使用只有13%的参数量的情况下,也能与大型模型相媲美。
实验结果:SLMRec在保持较小模型大小的同时,实现了与大型模型相当的性能,并在训练和推理时间上分别达到了6.6倍和8.0倍的速度提升。
技术贡献:SLMRec模型的设计正交于其他后训练效率技术(如量化和剪枝),可以与这些技术结合使用,进一步提高效率。
未来工作:论文提出了未来的研究方向,包括将增量学习整合到LLM-based推荐系统中,以及探索多模态信息融合等,以提高模型的适应性和效率。
结论:通过采用知识蒸馏方法,可以有效地提高小型语言模型在序列推荐任务中的性能,同时显著降低模型规模和提高效率,为构建高效推荐系统提供了新的方向。
文章目录
- note
- 一、研究背景
- Q: 这篇论文试图解决什么问题?
- Q: 有哪些相关研究?
- 二、SLMRec模型
- G-LLMRec和E-LLMRec
- 蒸馏过程
- 优化目标
- 解决方法
- 三、相关实验
- 1. 基线选择
- 2. 实验设计
- 实验结论
- 四、未来方向
- Reference
一、研究背景
论文:https://openreview.net/forum?id=G4wARwjF8M
代码:https://github.com/WujiangXu/SLMRec
Q: 这篇论文试图解决什么问题?
A: 这篇论文探讨了在序列推荐(Sequential Recommendation, SR)任务中,大型语言模型(Large Language Models, LLMs)的必要性和效率问题。具体来说,论文试图解决以下几个问题:
- 大型语言模型的规模需求:尽管LLMs在SR任务中表现出色,但目前缺乏关于在SR场景中实际需要多大语言模型的证据。论文试图了解LLMs的规模与其在SR任务上的性能之间的关系。
- 大型模型的效率问题:由于LLMs的庞大规模,它们在需要处理大量日志的日常实际平台中应用是低效且不切实际的。论文探讨了如何提高基于LLM的SR模型的实用性和效率。
- 模型参数的冗余性:论文通过实验发现,LLMs的许多中间层是冗余的。基于这一发现,论文提出了一种方法,通过简化知识蒸馏(Knowledge Distillation, KD)技术,增强小型语言模型(Small Language Models, SLMs)在SR任务上的性能。
- 模型效率与性能的平衡:论文提出了一种新的模型SLMRec,旨在使用更少的参数(仅LLM-based推荐模型的13%)实现与大型模型相当的性能,同时显著提高训练和推理速度。
总的来说,这篇论文的目标是重新评估在序列推荐任务中对大型语言模型的需求,并探索提高小型语言模型性能的有效方法,以实现更高效和实用的推荐系统。
Q: 有哪些相关研究?
A: 根据论文内容,相关研究主要涉及以下几个领域:
- 序列推荐(Sequential Recommendation, SR):传统的SR方法主要关注于开发各种时序编码器以捕获用户的短期和长期兴趣。随着大型语言模型(LLMs)的成功,研究人员开始利用开源的LLMs构建推荐系统。
- 知识蒸馏(Knowledge Distillation, KD):知识蒸馏是一种强大的技术,通过训练一个较小的“学生”模型来模仿一个大型的“教师”模型的预测分布,从而将教师的知识转化为更紧凑、压缩的表示形式。
- 深度语言模型的知识:近期社区对语言模型中的语言属性和知识如何编码感兴趣。一些研究强调知识集中在中间层或最后几层,而其他研究尝试进行知识编辑,并得出信息可能在各层之间非局部存储的结论。
- 模型剪枝(Model Pruning):模型剪枝是通过移除不重要的参数来减小一个训练有素的大型模型的大小的基本方法。近期的工作集中在将剪枝方法应用于Transformer架构。
- 参数高效微调(Parameter-Efficient Fine-Tuning, PEFT):PEFT是一种新技术,旨在在保持最小的计算和内存成本的同时,将大型语言模型(LLMs)调整到特定任务上。
论文中提到的一些具体相关工作包括但不限于:
- BERT4Rec:使用双向自注意力网络来建模用户行为序列。
- SASRec:基于自注意力的顺序模型,通过注意力机制识别用户行为历史中的相关项目。
- Open-P5:一个开源平台,用于促进基于LLM的生成式推荐系统的研究。
- E4SRec:将大型语言模型(LLMs)整合到序列推荐系统中,显著提高了处理项目ID和个性化的能力。
这些研究为本文提出的SLMRec模型提供了理论和技术背景,同时也表明了序列推荐领域的研究进展和挑战。
二、SLMRec模型
G-LLMRec和E-LLMRec
前者是传统序列推荐模型,后者利用LLM作为特征提取器,后者分为两类:
- 生成式方法(G-LLMRec):将物品映射为文本token,将推荐任务转化为基于历史序列的下一个token生成任务(如P5、LLaRA)。其核心思想是通过LLM的生成能力直接预测用户可能交互的物品,类似于自然语言生成中的自回归机制。
- 嵌入式方法(E-LLMRec):沿用传统推荐框架,利用LLM提取序列的最后一层隐藏表征作为用户偏好表示(如E4SRec),并通过外部适配器计算用户-物品偏好得分。此类方法将LLM视为特征提取器,更贴近BERT等预训练模型的思路,保留了对用户隐式偏好的建模能力。
实验结论:LLMRec方法相较TSR基准模型(如SASRec)可带来近20%的性能提升,但其参数量激增(高达7B+)导致训练与推理成本剧增,严重制约实际部署。提出的SLMRec在性能逼近7B级LLMRec模型的同时,训练/推理速度提升达6.6倍/8.0倍
蒸馏过程
图1:分层知识蒸馏框架示意图。教师模型(左边)与学生模型(右边)同为E-LLMRec架构,通过对齐隐藏表征实现知识迁移。图中展示了分块策略(每 m / n m / n m/n 层为一组),多监督信号(红色箭头)与损失函数。
为压缩模型规模,本文采用离线知识蒸馏(Offline Knowledge Distillation)策略,其优化目标为:
min Θ s [ L c e ( Θ s ) + λ D k d ( Θ t , Θ s ) ] \min _{\Theta_s}\left[\mathcal{L}_{c e}\left(\Theta_s\right)+\lambda \mathcal{D}_{k d}\left(\Theta_t, \Theta_s\right)\right] Θsmin[Lce(Θs)+λDkd(Θt,Θs)]
- 教师模型 f t ( Θ t ) f_t\left(\Theta_t\right) ft(Θt) :完整LLM架构的E-LLMRec模型,预训练后参数固定。
- 学生模型 f s ( Θ s ) f_s\left(\Theta_s\right) fs(Θs) :轻量化架构(如剪裁层数或隐层维度),需学习逼近教师模型的表征能力。
- 蒸馏损失 D k d \mathcal{D}_{k d} Dkd :采用KL散度 衡量教师与学生输出的概率分布差异:
D k d = ∑ u , i p ^ i ( t ) log p ^ i ( t ) p ^ i ( s ) \mathcal{D}_{k d}=\sum_{u, i} \hat{p}_i^{(t)} \log \frac{\hat{p}_i^{(t)}}{\hat{p}_i^{(s)}} Dkd=u,i∑p^i(t)logp^i(s)p^i(t)
优化目标
1.分层分块策略
- 教师模型:包含 M M M 层解码器,每 m m m 层划分为一个块,共 B = ⌊ M m ⌋ B=\left\lfloor\frac{M}{m}\right\rfloor B=⌊mM⌋ 块。
- 学生模型:包含 N N N 层解码器 ( N < M ) (N<M) (N<M) ,每 n n n 层划分为一个块,块数 B B B 与教师模型一致。
- 隐藏表征对齐:
教师第 k m k m km 层与学生第 k n k n kn 层的输出表征需对齐:
H t = { h t m , … , h t M } , H s = { h s n , … , h s N } \mathbf{H}_t=\left\{\mathbf{h}_t^m, \ldots, \mathbf{h}_t^M\right\}, \quad \mathbf{H}_s=\left\{\mathbf{h}_s^n, \ldots, \mathbf{h}_s^N\right\} Ht={htm,…,htM},Hs={hsn,…,hsN}
2.多粒度蒸馏损失
(1)特征方向对齐(余弦相似度)
通过余弦相似度约束教师与学生表征的方向一致性:
D c o s = 1 B ∑ k = 1 B h t ( k m ) ⋅ h s ( k n ) ∥ h t ( k m ) ∥ 2 ⋅ ∥ h s ( k n ) ∥ 2 \mathcal{D}_{\mathrm{cos}}=\frac{1}{B} \sum_{k=1}^B \frac{\mathbf{h}_t^{(k m)} \cdot \mathbf{h}_s^{(k n)}}{\left\|\mathbf{h}_t^{(k m)}\right\|_2 \cdot\left\|\mathbf{h}_s^{(k n)}\right\|_2} Dcos=B1k=1∑B ht(km) 2⋅ hs(kn) 2ht(km)⋅hs(kn)
(2)特征范数对齐(L2距离)
最小化教师与学生表征的L2范数差异:
D n o r m = 1 B ∑ k = 1 B ∥ h t ( k m ) − h s ( k n ) ∥ 2 2 \mathcal{D}_{\mathrm{norm}}=\frac{1}{B} \sum_{k=1}^B\left\|\mathbf{h}_t^{(k m)}-\mathbf{h}_s^{(k n)}\right\|_2^2 Dnorm=B1k=1∑B ht(km)−hs(kn) 22
(3)多重监督信号
在每块输出层添加适配器 ( W a ) \left(W_a\right) (Wa) ,引入中间监督损失:
L m s = 1 B − 1 ∑ k = 1 B − 1 L c e ( y , p ^ t ( k m ) ) \mathcal{L}_{\mathrm{ms}}=\frac{1}{B-1} \sum_{k=1}^{B-1} \mathcal{L}_{c e}\left(y, \hat{p}_t^{(k m)}\right) Lms=B−11k=1∑B−1Lce(y,p^t(km))
3.联合优化目标
总损失函数整合交叉嫡损失与多粒度蒸馏损失:
min Θ s , W a [ L c e + λ 1 D c o s + λ 2 D n o r m + λ 3 L m s ] \min _{\Theta_s, W_a}\left[\mathcal{L}_{c e}+\lambda_1 \mathcal{D}_{\mathrm{cos}}+\lambda_2 \mathcal{D}_{\mathrm{norm}}+\lambda_3 \mathcal{L}_{\mathrm{ms}}\right] Θs,Wamin[Lce+λ1Dcos+λ2Dnorm+λ3Lms]
其中 λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ1,λ2,λ3 为超参数,控制各损失项的权重。
解决方法
A: 论文通过以下几个关键步骤解决大型语言模型在序列推荐任务中的效率和必要性问题:
- 实验探索:首先,论文通过在大规模行业数据集上进行广泛的实验,探索了减少模型参数对性能的影响,并发现LLMs的许多中间层是冗余的。
- 知识蒸馏(Knowledge Distillation, KD):基于实验发现,论文提出了一种简单的知识蒸馏方法来训练小型语言模型(SLMRec)。这种方法通过将教师模型(大型语言模型)的知识传递给学生模型(小型语言模型),使得学生模型能够学习到与教师模型相似的表示能力。
- 特征对齐:论文采用了基于余弦相似度的损失项(Dcos)和特征范数正则化(Dnorm)来对齐教师模型和学生模型之间的特征方向,确保学生模型能够学习到与教师模型相似的特征表示。
- 多监督信号:为了引导学生模型学习到与推荐任务相关的知识,论文引入了额外的监督信号(Lms),通过学习额外的适配器(adapters)来减少维度,并优化预测结果。
- 模型结构简化:SLMRec模型采用了与教师模型相似的E-LLMRec模型架构,但通过知识蒸馏方法,减少了模型大小,同时保持了竞争力的性能。
- 效率提升:实验结果表明,SLMRec模型在使用仅有大型语言模型13%的参数量的情况下,实现了与大型模型相当的性能,并且在训练和推理时间上分别达到了6.6倍和8.0倍的速度提升。
- 兼容性:SLMRec模型的设计是与大型语言模型中的其他量化和剪枝技术正交的,这意味着它可以与这些技术结合使用,进一步提高效率。
三、相关实验
Q: 论文做了哪些实验?
A: 论文中进行了一系列实验来评估提出的方法SLMRec,并回答了几个研究问题(RQs)。以下是论文中提到的主要实验内容:
- 性能比较(RQ1):比较SLMRec模型与基于大型语言模型(LLM)的推荐模型在大规模行业数据集上的性能。使用了Amazon18数据集的不同类别,并将SLMRec与其他基线模型进行了比较,包括传统的序列推荐方法(如GRU4Rec、BERT4Rec和SASRec)和基于LLM的方法(如Open-P5LLaMa和E4SRec*)。
- 效率和运行时间比较(RQ2):评估SLMRec模型与G-LLMRec和E-LLMRec模型在效率和运行时间方面的比较。实验包括训练时间、推理时间、训练参数数量和推理参数数量的测量。
- 知识正则化器的效果(RQ3):通过消融研究来评估提出的三种知识正则化器(Dcos、Dnorm和Lms)对SLMRec性能的影响。
- 在线知识蒸馏的可行性(RQ4):研究了在下游推荐任务中同时训练教师模型和SLMRec的可能性,即在线知识蒸馏。
- 块数b的影响:研究了在SLMRec中块数b对模型性能的影响。
- 模型研究:进一步研究了在线知识蒸馏技术和块数b对模型性能的影响。
实验结果表明,SLMRec在保持较小模型大小的同时,实现了与大型语言模型相当的性能,并且在训练和推理时间上都有显著的提升。此外,通过引入不同的知识正则化器,SLMRec能够更好地学习到与推荐任务相关的知识,进一步提升了模型的性能。
1. 基线选择
- 传统基线:选用SASRec作为传统序列推荐(TSR)的基准模型,因其在序列建模中表现出色。
- LLM基线:采用嵌入式方法E4SRec作为基于LLM的基线模型,通过预训练权重与适配器实现推荐任务。
2. 实验设计
1.传统序列推荐(TSR)部分:
- 使用SASRec预训练的嵌入层(Embedding Layer)获取商品序列的表示。
- 输出用户表示 h u h_u hu 和商品表示 h i h_i hi 。
2.基于LLM的推荐(E-LLMRec)部分:
- 将商品嵌入与提示嵌入(Prompt Embedding )拼接后输入LLM。
- 利用LLM作为特征提取器(类似BERT),输出最后一层的隐藏表征作为用户偏好表示。
- 与生成式方法(G-LLMRec)不同,保留TSR的预测框架(用户-商品内积计算得分)。
层数裁剪策略对比如下,使用更少层(8 层)的模型实现了几乎等同于(24 层)模型的性能:
数据集:基于Amazon 18数据集进行大规模实验验证,确保工业场景代表性。
负采样:对每个用户采样999个负样本+1个正样本,避免评估偏置。
参数优化:采用LoRA技术降低计算开销,仅更新部分低秩适配矩阵参数。
实验结论
- 模型性能随层数增加而提升
- 即使仅使用2层的E4SRec,其性能仍显著优于SASRec(NDCG@10提升约12%)。
- 主要原因包括:
- 更大隐层维度:LLM隐层维度为4096(VS. SASRec的128),增强了表征能力。
- 预训练权重初始化:LLM的预训练参数提供了更优的语义先验。
- 参数高效微调(PEFT):LoRA技术有效平衡了参数更新与计算效率。
- 中间层存在显著冗余
- 在 l=8 至 l=24 区间内,性能提升趋缓(NDCG@10差异<2%)
- 核心结论:8层模型(E4SRec)即可逼近24层模型(E4SRec)的效果,表明大部分中间层对推荐任务贡献有限。
四、未来方向
增量学习(Incremental Learning):当前的SLMRec模型需要重新训练以适应新的场景或数据集。研究如何将增量学习整合到基于LLM的推荐系统中,以提高模型对新情况的适应性和减少对全量数据训练的依赖。
少样本学习(Few-shot Learning):探索LLMs在少样本学习方面的潜力,以便在面对新数据集或平台的新流量日志时,模型能够更快地适应,而不需要从头开始训练。
多模态信息融合:考虑将用户的语言学信息和视觉信息等多模态数据集成到LLMRec模型中,这可能会进一步提高模型对新场景的适应性。
模型压缩和加速:虽然SLMRec已经在模型大小和效率上取得了进步,但仍有进一步压缩和加速模型的空间,特别是在移动设备或资源受限的环境中。
知识蒸馏的改进:研究更高级的知识蒸馏技术,以更有效地将知识从大型模型传递到小型模型。
模型解释性:提高模型的可解释性,帮助理解模型是如何做出推荐决策的,这对于提高用户信任和满意度至关重要。
跨领域推荐:研究模型在跨领域推荐任务中的性能,以及如何通过迁移学习等技术来提高跨领域的泛化能力。
实时推荐:探索模型在实时推荐场景中的应用,以及如何优化模型以满足实时推荐的需求。
用户隐私保护:研究如何在保护用户隐私的同时进行有效的推荐,例如通过差分隐私或联邦学习等技术。
模型鲁棒性:提高模型对于噪声数据、对抗性攻击等的鲁棒性,确保推荐系统在面对恶意行为时的稳定性。
这些探索点可以帮助推动序列推荐领域的进一步发展,提高推荐系统的性能、效率和用户体验。
Reference
[1] https://github.com/WujiangXu/SLMRec
相关文章:
ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
note 问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。 研究动机&…...
走路碎步营养补充贴士
走路碎步,这种步伐不稳的现象,在日常生活中并不罕见,特别是对于一些老年人或身体较为虚弱的人来说,更是一种常见的行走状态。然而,这种现象可能不仅仅是肌肉或骨骼的问题,它还可能是身体在向我们发出营养缺…...
【bug日记】 编译错误
在我使用vscode的时候,我想用一个头文件和两个cpp文件,头文件是用来声明一个类的,一个cpp是用来类的成员函数,一个cpp是主函数 但是我写完编译发现会弹出找不到这个类成员函数这个cpp文件,爆出这样的错误 提示我找不到…...
计算机视觉cv2入门之边缘检测
检测原理 边缘检测是指检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,因此可以将这些像素点作为一个集合,用于标注图像中不同物体的边界。 边缘是图像上灰度级变化很快的点的集合。这些点的梯度往往很大。因此我们可以使用一阶导数和二…...
python脚本实现服务器内存和cpu使用监控,并记录日志,可以设置阈值和采样频率
Python 脚本,实现以下功能: 按日期自动生成日志文件(例如 cpu_mem_20231001.csv)当 CPU 或内存超过阈值时触发记录独立记录报警事件(保存到 alert.log)支持自定义阈值和监控间隔 脚本代码 import psutil …...
解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题
问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题: 1.ipadpro 接上鼠标后,滚轮上下反转,这个是苹果自己的模拟造成的问题,在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…...
星越L_三角指示牌及危险警示灯使用
目录 1.打开危险警告灯 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打开危险警示灯 2.取出反光背心穿上 3.取出指示牌...
使用WireShark解密https流量
概述 https协议是在http协议的基础上,使用TLS协议对http数据进行了加密,使得网络通信更加安全。一般情况下,使用WireShark抓取的https流量,数据都是加密的,无法直接查看。但是可以通过以下两种方法,解密抓…...
MySQL复习(检查本地MySQL是否安装、DataGrip数据库可视化工具使用、增删改查基础语法、唯一索引、SQL简单函数)
目录 一、快速检查本地MySQL是否安装。(详细教程) (1)MySQL本地系统环境变量配置。(简单说明) (2)cmd命令行——判断MySQL是否安装成功! 二、DataGrip数据库操作可视化工具。 (1)基本介绍。 &am…...
数学建模 第一节
目录 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…...
《Python实战进阶》No24: PyAutoGUI 实现桌面自动化
No24: PyAutoGUI 实现桌面自动化 摘要 PyAutoGUI 是一个跨平台的桌面自动化工具,能够模拟鼠标点击、键盘输入、屏幕截图与图像识别,适用于重复性桌面任务(如表单填写、游戏操作、批量文件处理)。本集通过代码截图输出日志的实战形…...
实验篇| CentOS 7 下 Keepalived + Nginx 实现双机高可用
为什么要做双机高可用? 想象一下:你的网站突然宕机,用户无法访问,订单流失、口碑暴跌…💸 双机热备就是解决这个痛点的终极方案!两台服务器互为备份,724小时无缝切换,保障业务…...
音视频入门基础:RTP专题(19)——FFmpeg源码中,获取RTP的音频信息的实现(下)
本文接着《音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)》,继续讲解FFmpeg获取SDP描述的RTP流的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四…...
JAVA面试_进阶部分_dubbo负载均衡策略
前言:zookeeper作为dubbo的注册中心,有一个很重要的点,我们的程序是分布式应用,服务部署在几个节点(服务器)上,当消费者调用服务时,zk返回给dubbo的是一个节点列表,但是d…...
《我的Python觉醒之路》之转型Python(十三)——控制流
#今天风景不错,明天继续学习 请关注我之前的笔记啊...
QT6.8.2在线安装记录
命令行带安装源启动,但仍不能连接到服务器,开着VPN才通过 .\qt-online-installer-windows-x64-4.8.1.exe --mirror https://mirrors.ustc.edu.cn/qtproject 开始安装前断开VPN,其实启动安装器时的镜像源修改参数是起作用的,因为下…...
70.HarmonyOS NEXT PicturePreview组件深度剖析:从架构设计到核心代码实现
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT PicturePreview组件深度剖析:从架构设计到核心代码实现 文章目录 HarmonyOS NEXT PicturePreview组件深度剖析…...
如何从受 Cloudflare 保护的网站提取数据:技术与挑战
引言 Web抓取是数据科学和市场研究的重要工具,但当面对受Cloudflare等先进保护系统守护的网站时,这项任务变得异常具有挑战性。Cloudflare的机器人检测系统需要精心设计的网页抓取解决方案才能成功提取数据。本文将介绍Cloudflare的防护机制以及如何使用…...
【DeepSeek应用】DeepSeek模型本地化部署方案及Python实现
DeepSeek实在是太火了,虽然经过扩容和调整,但反应依旧不稳定,甚至小圆圈转半天最后却提示“服务器繁忙,请稍后再试。” 故此,本文通过讲解在本地部署 DeepSeek并配合python代码实现,让你零成本搭建自己的AI助理,无惧任务提交失败的压力。 一、环境准备 1. 安装依赖库 …...
WPF程序使用AutoUpdate实现自动更新
AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …...
A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分
3、微调(上一部分内容) 4、LLMs的对齐 大型语言模型(LLMs)中的对齐涉及引导模型输出以符合人类预期和偏好,特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式: 带有反馈的人工…...
【2025】Electron Git Desktop 实战一(上)(架构及首页设计开发)
源代码仓库: Github仓库【electron_git】 Commit : bb40040 Github Desktop 页面分析 本节目标: 1、实现类似Github Desktop的「空仓库」提示页 2、添加本地仓库逻辑编写从 Github Desktop 我们看到 他的 主要页面分为三个区域 Head头部区域…...
996引擎-问题处理:缺失特效分割文件 ModelAtlasSplitConfigs
通常我们买的资源都是带会 ModelAtlasSplitConfigs.txt 或 sceneAtlasSplitConfigs.txt 的 但有时确实找不到的话,是可以用996工具生成的:...
2024年12月CCF-GESP编程能力等级认证C++编程三级真题解析
三级真题的难度: CCF-GESP编程能力等级认证的C++三级真题难度通常被认为是中等水平,适合具备一定编程基础的考生。以下是关于三级真题难度的一些具体信息: 1. 考试内容 C++三级考试主要涵盖以下几个方面的知识: 基本语法:包括数据类型、变量、运算符等基础知…...
Java面试八股—Redis篇
一、Redis的使用场景 (一)缓存 1.Redis使用场景缓存 场景:缓存热点数据(如用户信息、商品详情),减少数据库访问压力,提升响应速度。 2.缓存穿透 正常的访问是:根据ID查询文章&…...
机器人ROS学习:Ubuntu22.04安装ROS2和Moveit2实现运动规划
通过本篇文章学习,你可以收获以下内容: 学会在 Ubuntu22.04 上安装 Moveit2学会下载编译运行 Moveit2 样例程序学会使用样例程序进行运动规划等 版本平台 系统版本:ubuntu22.04ROS2 版本:humbleMoveit 版本:moveit2…...
树结构和数组之间的转化
1、树结构转为数组 treeToArray(treeData, returnValue []) { let newValue [...returnValue] treeData.map(item > { if (item.children) { const { children, ...treeObj } { ...item } newValue.push(treeObj) newValue this.treeToArray(children, newValue) } else…...
2024华东师范大学计算机复试上机真题
2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测:传动门:pgcode…...
Blender-MCP服务源码3-插件开发
Blender-MCP服务源码3-插件开发 Blender-MCP服务源码解读-如何进行Blender插件开发 1-核心知识点 1)使用Blender开发框架学习如何进行Blender调试2)学习目标1-移除所有的Blender业务-了解如何MCP到底做了什么?3)学习目标2-模拟MC…...
C++复试笔记(三)
1.友元函数和友元类 1.1友元函数 友元函数的经典实例是重载 "<<" 和 ">>" ,去重载operator<<,然后发现没办法将operator<<重载成成员函数。因为cout的 输出流对象和隐含的this指针在抢占第一个参数的位置。this指针默…...
【数学基础】概率与统计#1概率论与信息论初步
本系列内容介绍: 主要参考资料: 《深度学习》[美]伊恩古德菲洛 等 著 《机器人数学基础》吴福朝 张铃 著 文章为自学笔记,默认读者有一定的大学数学基础,仅供参考。 目录 随机变量概率分布离散型随机变量和概率质量函数连续型变量…...
掌握这些 UI 交互设计原则,提升产品易用性
在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、…...
工程化与框架系列(32)--前端测试实践指南
前端测试实践指南 🧪 引言 前端测试是保证应用质量的重要环节。本文将深入探讨前端测试的各个方面,包括单元测试、集成测试、端到端测试等,并提供实用的测试工具和最佳实践。 测试概述 前端测试主要包括以下类型: 单元测试&a…...
Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示)
一、计算机眼中的图像 像素 像素是图像的基本单元,每个像素存储着图像的颜色、亮度和其他特征。一系列像素组合到一起就形成 了完整的图像,在计算机中,图像以像素的形式存在并采用二进制格式进行存储。根据图像的颜色不 同,每个像…...
表单 schema 配置化
一、前沿 基于 Ant Design Vue 组件库实现了表单的配置化生成,通过 schema 配置化的方式实现表单的动态渲染、数据绑定和更新等功能,而提交按钮及获取数据逻辑由使用方自行提供。通过 schema 对象来定义表单的结构和属性,modelData 对象存储…...
Java数据结构第二十三期:Map与Set的高效应用之道(二)
专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、哈希表 1.1. 概念 1.2. 冲突 1.3. 避免冲突 1.4. 解决冲突 1.5. 实现 二、OJ练习 2.1. 只出现一次的数字 2.2. 随机链表的复制 2.3. 宝石与石头 一、哈希表 1.1. 概念 顺序结构以及平衡树中…...
unity生命周期
unity的生命周期 都是有序的1. 实例化与初始化阶段Awake()OnEnable() 2. 开始与更新阶段Start()FixedUpdate()Update()LateUpdate() 3. 渲染阶段OnPreCull()OnBecameVisible() 和 OnBecameInvisible()OnWillRenderObject()OnRenderObject()OnPostRender() 4. 销毁阶段OnDisable…...
对比学习(Contrastive Learning)
1. 概念 对比学习(Contrastive Learning)是一种自监督学习(Self-Supervised Learning)方法,其核心思想是通过相似样本靠近,不同样本远离的方式学习数据的潜在表示。它广泛用于无标签数据的特征提取&#x…...
C语言输入与输出:从零掌握数据的“对话”
手把手教你理解C语言中输入(Input)与输出(Output)的核心操作。 一、输入与输出是什么? C语言通过标准库函数实现程序与用户(或设备)的“对话”: 输出:程序将数据展示给…...
PyCharm 2019.1.3使用python3.9创建虚拟环境setuptools-40.8.0报错处理
目录 前置: 一劳永逸方法(缺最后一步,没有成行) step one: 下载高版本的pip、setuptools、virtualenv的tar.gz包 step two: 进入PyCharm安装目录的 helpers 目录下 step three: 下载并安装grep和sed命令,然后执行 …...
从0到1构建AI深度学习视频分析系统--基于YOLO 目标检测的动作序列检查系统:(2)消息队列与消息中间件
文章大纲 原始视频队列Python 内存视频缓存优化方案(4GB 以内)一、核心参数设计二、内存管理实现三、性能优化策略四、内存占用验证五、高级优化技巧六、部署建议检测结果队列YOLO检测结果队列技术方案一、技术选型矩阵二、核心实现代码三、性能优化策略四、可视化方案对比五…...
Redis基本命令手册——五大类型
目录 一:基本操作 二:字符串(String) 三:哈希(Hash) 四:列表(List) 五:集合(Set) 六:有序集合(Zset&…...
Java 大视界 -- Java 大数据在智能金融资产定价与风险管理中的应用(134)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Linux 系统蓝牙音频服务实现分析
Linux 系统蓝牙音频服务实现分析 蓝牙音频设备连接管理Linux 系统中,蓝牙音频服务实现为系统音频服务 PulseAudio 的可加载模块,它用来以 PulseAudio 标准的方式描述蓝牙音频设备,将其嵌入 PulseAudio 的音频处理流水线,并呈现给用户,支持用户切换音频设备,如蓝牙耳机。 …...
PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法
在上一篇文章中,我们介绍了 Proximal Policy Optimization (PPO) 算法,并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法,这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…...
craftjs的示例landing项目改成APP路由
下载项目 项目地址是:https://github.com/prevwong/craft.js 示例项目在examples文件夹下面landing文件夹 修改 1.修改依赖包 由于craftjs使用的多包管理,示例项目中craftjs/core和craftjs/layers使用的是工作区路径,这里需要修改版本 …...
java -jar 执行基于Maven构建的Java应用的方法总结
一、Maven pom.xml文件未指定主类的情况 1、用Maven打包 mvn clean package -DskipTests 2、用java命令执行jar包 java -cp maven-allin-mainclass-demo-1.0-SNAPSHOT.jar org.example.Main 二、Maven pom.xml文件指定主类的情况 1、pom.xml文件指定主类,有两种…...
前端发布缓存导致白屏解决方案
解决发布H5后因为本地缓存白屏方案 一、 核心配置优化(前提是访问网站的请求能抵达服务器) 方案一:前端项目设置全局不缓存方案 运行逻辑:在H5服务器配置中增加Cache-Control: no-cache或max-age0响应头,禁用静态资…...
【后端】【django】Django 自带的用户系统与 RBAC 机制
Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统(django.contrib.auth)提供了 身份验证(Authentication) 和 权限管理(Authorization),能够快速实现 用户管理、权限控制、管理员后台…...
SpringBoot MCP 入门使用
随着AI的火爆,最近发现MCP在未来确实大有可为,作为一名javaer怎么可以落后在历史洪流呢,根据官网和cursor也从零开始体验一下自定义mcp server。以后可以根据自己业务场景做出各种适合自身业务的工具。 至于什么是MCP 可以到https://modelcon…...