-
(1)内存管理主要功能: 内存分配,内存保护,地址映射和内存扩充等.主要任务: 内存分配的主要任务是为每道程序分配内存空间,提高存储器利用率,以减少不可用的内存空间,允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要. 内存保护的主要任务是确保每道用户程序都在自己的内存空间中运行,互不干扰. 地址映射的主要任务是将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址. 内存扩充的主要任务是借助虚拟存储技术,从逻辑上去扩充内存容量. (2)处理机管理主要功能: 进程控制,进程同步,进程通信和调度. 主要任务: 进程控制:为作业创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换. 进程同步:对诸进程的运行进行调节. 进程通信:实现在相互合作进程之间的信息交换. 调度分为作业调度和进程调度. 作业调度基本任务:从后备队列中按照一定的算法,选择出若干个作业,为它们分配必要的资源; 进程调度的任务:从进程的就绪队列中,按照一定的算法选出一新进程,把处理机分配给它,并为它设置运行现场,是进程投入运行. (3)设备管理主要功能:缓冲管理,设备分配和设备处理,以及虚拟设备等.主要任务:完成用户提出的I/O请求,为用户分配I/O设备;提高CPU和I/O设备的利用率;提高I/O速度;以及方便用户使用I/O设备. 缓冲管理:提高CPU的利用率进而提高系统的吞吐量 设备分配:根据用户进程的I/O请求、系统的现有资源以及按照某种设备的分配策略,为之 分配其所需的设备 设备处理:用于实现CPU和设备控制器之间的通信(4)文件管理主要功能:对文件存储空间的管理,目录管理,文件的读,写管理以及文件的共享和保护.主要任务:对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性.
-
1.常见NLP任务信息抽取:从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。文本生成:机器像人一样使用自然语言进行表达和写作。依据输入的不同,文本生成技术主要包括数据到文本生成和文本到文本生成。数据到文本生成是指将包含键值对的数据转化为自然语言文本;文本到文本生成对输入文本进行转化和处理从而产生新的文本问答系统:对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。语音识别和生成:语音识别是将输入计算机的语音符号识别转换成书面语表示。语音生成又称文语转换、语音合成,它是指将书面文本自动转换成对应的语音表征。信息过滤:通过计算机系统自动识别和过滤符合特定条件的文档信息。通常指网络有害信息的自动识别和过滤,主要用于信息安全和防护,网络内容管理等。舆情分析:是指收集和处理海量信息,自动化地对网络舆情进行分析,以实现及时应对网络舆情的目的。信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。文本挖掘:包括文本聚类、分类、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。2.如何将业务问题抽象为已得到很好解决的典型问题2.1 明确业务的输入与输出令输入文本用X表示,输出标签用Y表示,则有以下粗略的分类:2.1.1 如果Y表示某一类的概率,或者是一个定长向量,向量中的每个维度是其属于各个类的概率,且概率之和为1,则可抽象为文本多分类问题。a.一般X只有一段文本。如下所示 i.如情感分析等任务。房间 太 小 。 其他 的 都 一般 0b.如果X是2段文本(X1,X2),则是可以抽象为句对分类问题。如下所示 i:如NLI等任务。大家觉得她好看吗 大家觉得跑男好看吗? 0c.如果的每个类别的概率相互独立,即各类概率之和不为1,可抽象为文本多标签分类问题。如下所示 i:如用户评论分类、黄反识别等任务。互联网创业就如选秀 需求与服务就是价值 0 1d. 如果X有多段非文本特征输入,如整型、浮点型类型特征。则可抽象为混合特征的分类问题。如下所示 i:如CTR预估等任务。 CTR预估*CTR预估是推荐中最核心的算法之一。 相关概念: CTR预估:对每次广告的点击情况做出预测,预测用户是点击还是不点击。 CTR预估的影响因素:比如历史点击率、广告位置、时间、用户等 CTR预估相关介绍 推荐算法之4——CTR预估模型2.1.2 如果X是2段文本(X1,X2),Y表示二者的相似度,可抽象为文本匹配问题。如下所示喜欢 打篮球 的 男生 喜欢 什么样 的 女生 爱 打篮球 的 男生 喜欢 什么样 的 女生 1a.如语义相似度、相似问题匹配等任务。b.文本聚类的问题可以通过文本相似度问题进行处理。2.1.3 如果X有一段文本,Y是一个与X等长的序列,可抽象为序列标注问题。如下所示海 钓 比 赛 地 点 在 厦 门 与 金 门 之 间 的 海 域 。 O O O O O O O B-LOC I-LOC O B-LOC I-LOC O O O O O Oa.如分词、POS、NER、词槽挖掘等任务。2.1.4 如果X有一段文本,Y是一个不定长的文本,可抽象为文本生成问题。如下所示Rachel Pike : The science behind a climate headline Khoa học đằng sau một tiêu đề về khí hậua.如机器翻译、文本摘要、标题生成等任务。2.1.5.如果X为一段文本,Y表示文本X作为正常语句出现的概率或者混淆度,则属于语言模型任务。如下所示<s> but some analysts remain sour on the company but some analysts remain sour on the company <e>a.语言模型任务的子问题是基于上(下)文X预测下(上)一个词出现的概率Y,可以理解为一种特殊的文本分类。2.1.6如果X是2段文本(X1,X2),分别表示正文篇章和问题,Y是篇章中的一小段文本,表示对应问题的答案,则可抽象为阅读理解问题。{ "data": [{ "title": "", "paragraphs": [{ "context": "爬行垫根据中间材料的不同可以分为:XPE爬行垫、EPE爬行垫、EVA爬行垫、PVC爬行垫;其中XPE爬行垫、EPE爬行垫都属于PE材料加保鲜膜复合而成,都是无异味的环保材料,但是XPE爬行垫是品质较好的爬行垫,韩国进口爬行垫都是这种爬行垫,而EPE爬行垫是国内厂家为了减低成本,使用EPE(珍珠棉)作为原料生产的一款爬行垫,该材料弹性差,易碎,开孔发泡防水性弱。EVA爬行垫、PVC爬行垫是用EVA或PVC作为原材料与保鲜膜复合的而成的爬行垫,或者把图案转印在原材料上,这两款爬行垫通常有异味,如果是图案转印的爬行垫,油墨外露容易脱落。当时我儿子爬的时候,我们也买了垫子,但是始终有味。最后就没用了,铺的就的薄毯子让他爬。您好,爬行垫一般色彩鲜艳,能吸引宝宝的注意力,当宝宝刚会爬的时候,趴在上面玩,相对比较安全,不存在从床上摔下来的危险。对宝宝的爬行还是很有好处的。还有就是妈妈选择爬行垫时可以选择无害的PE棉,既防潮又隔冷隔热。外有要有一层塑料膜,能隔绝液体进入垫子内部,而且方便清洗。宝宝每次爬行,一定要记得把宝宝的手擦干净。", "qas": [{ "answers": [{ "text": "XPE", "answer_start": 17 }], "id": "DR-single-pre_and_next_paras-181574", "question": "爬行垫什么材质的好" }] }, ..., ] }] }2.1.7 如果Y是以上多种任务的组合,则可以抽象为多标签学习、多任务学习任务。a.如实体关系抽取任务,实体抽取本属于序列标注、关系抽取本属于文本多分类。2.2抽象与拆分任务取舍经验2.2.1优先考虑简单的任务,由易到难循序渐进:a.文本分类、文本匹配、序列标注、文本生成、阅读理解、多任务学习、强化学习、对抗学习等。2.2.2 复杂任务可拆分、化简成简单的子任务a.如实体关系抽取任务,可以拆分为实体识别+关系抽取的pipline进行实现。b.如文本纠错任务,可以拆分出语言模型、统计机器翻译等多种不同子任务构造复杂的pipline进行实现。c.如排序任务,输入X为多段文本,输出Y为每段文本的排序位置,可化简成文本分类问题、文本匹配问题进行处理。2.2.3 有监督学习任务优先于无监督学习任务a.因为有监督学习更可控,更易于应用最前沿的研究成果。文心目前只覆盖有监督、自监督任务。b.比如文本关键词抽取,可以有TFIDF之类的无监督解法,但效果控制较困难,不如转换为文本分类问题。2.2.4 能应用深度学习的任务优于不利用深度学习的任务a.因为深度学习算法效果一般更好,而且可以应用到最前沿的预训练模型。文心目前只采用深度学习算法。b.如果文本聚类,可以有LDA之类的解法,但效果一般不如基于深度学习的语义相似度的文本聚类。3. 明确业务目标与限制条件3.1典型业务目标与限制条件1.预测部署性能a.典型指标:qps 性能指标:QPS、TPS、系统吞吐量理解2.模型效果a.以文本分类为例,典型指标:精确率、准确率、召回率、F1值b.该评估指标应该在训练开始之前基本确定,否则很容易优化偏。3.硬件采购成本a.典型指标:钱b.GPU远贵于CPU,V100贵于P40。4.训练时间成本(GPU,卡,调参,GPU利用率)a.典型指标:每一轮训练所需要的时间。5.数据大小限制a.由于标注成本较高,很多时候是数据量很少又希望有很好的效果。6.开发迭代成本a.搭建环境成本b.迭代效率:往往是最消耗时间的部分。3.2 可供选择的方案选择平台版还是工具版选择GPU还是CPU训练,哪一款硬件,单机还是多机,单卡还是多卡,本地还是集群选择怎样的预制网络是否需要预训练模型选择哪一版本的预训练模型训练数据要多少batch_size、train_log_step、eval_step、save_model_step选多少4.根据业务目标与限制条件选择合适的方案4.1预测部署性能如果要求qps>1000a.不适合直接部署ERNIE预训练模型。b.但可尝试蒸馏策略,模型效果会存在一定损失。如果要求qps>100a.如果预算允许使用GPU,可尝试直接部署ERNIE相关预训练模型,推荐尝试ERNIE-tiny系列模型。b.如果预算只允许使用CPU,可尝试CPU集群部署ERNIE相关预训练模型。3.如果对部署性能要求不高,可随意尝试各种预训练模型。4.性能细节请参考:模型预测与部署——预测性能4.2 模型效果1.一般来说,复杂的网络优于简单的网络,多样的特征优于单一的特征,有预训练模型的效果优于无预训练模型。a.从模型复杂度来看,LSTM、GRU、CNN、BOW的复杂度与效果依次递减,速度依次提升。2.一般来说,在预训练模型中,large优于base优于tiny,新版本的模型优于旧版本的模型,针对具体任务的预训练模型优于通用版预训练模型。3.一般来说,在不欠拟合的情况下,训练数据越多模型效果越好,标注数据的质量越好效果越好。标注数据的质量优于数据的数量。4.不同任务适合的网络结构并不相同,具体任务具体分析。4.3硬件采购成本1.GPU远贵于CPU,常用训练用GPU型号为V100、P40、K40,价格依次递减。2.具体成本可参考百度云服务器-BCC-价格计算器3.如果缺少训练资源,可通过文心平台版的免费共享队列进行训练,资源紧张,且用且珍惜。4.4训练时间成本1.GPU还是CPUa.对于非ERNIE等复杂网络的模型,CPU的训练速度一般也能接受。 如果训练语料过多,数千万条以上,则建议采用CPU集群进行训练。 b.对于ERNIE模型,尽量采用GPU训练,CPU太慢,训练不起来。2.怎么用好GPU a.GPU并行训练能提升训练速度,建议优先把一个节点(trainer)的卡数用完,再考虑多机训练。因为单机多卡的GPU利用率更高,更快。而多机训练数据通信时间成本较高,时间更慢。 b.大原则:GPU利用率越高训练越快。 c.还有一点需要注意,多卡训练时是将不同的数据文件送给不同的卡,所以数据文件的个数要大于卡的个数。数据文件建议拆分细一些,这可以提升数据读取的速度。 d.熟练的同学可以尝试GPU多进程单机多卡训练、混合精度训练等方法,提升训练速度。3.train_log_step、eval_step、save_model_stepa.分别表示每多少步打印训练日志、每多少步评估一次验证集、每多少步保存一次模型。 b.设置不当也会拖慢训练时间 c.一般建议三者依次放大十倍,如:10、100、10004.batch_sizea.设置过小容易收敛慢,设置过大容易超过显存极限直接挂掉 b.如果使用ERNIE,batch_size建议小一些,使用large版本建议更小一些,如果输入语句并不是很长可以适当增加batch_size。 c.如果不使用ERNIE,可以大一些。 d.建议使用默认配置,如果想优化可以采用二分查找4.5 数据大小限制1.一般建议标注语料越多越好。2.非ERNIE模型一般需要几万至几百万条数据能收敛到较好的效果。3.ERNIE模型一般需要几千至几万条数据即可收敛到较好效果。a.一般不用ERNIE训练数百万条以上的数据,因为这会极大延长训练时间,增大资源消耗,而对效果的提升并不明显。自己有足够GPU资源的用户除外。 b.对于基线模型,建议在几万条数据上验证策略有效后再尝试增加数据量。4.如果用ERNIE模型,最少需要多少样本才能取得效果a.对于文本分类与序列标注,一般来说每个标签覆盖的样本数至少要超过200条才能有一定的效果。也就是说如果要进行50类多分类,就总共至少需要1万条样本。一般分类的类别越多任务越复杂。4.6开发迭代成本1.搭建环境成本a.如果只想训练基线模型验证效果,可以考虑使用文心平台版,免去搭建环境的成本。 b.如果需要不断调试、迭代优化模型,而由于平台版集群资源紧张造成迭代周期过长,可以尝试使用工具版。 i:这会付出搭建环境的成本,但长痛不如短痛。2.迭代效率a.使用工具版本地调试成功后再上集群训练能极大提升迭代效率。 b.使用预训练模型能提升迭代效率。 c.基线模型,建议在几万条数据上验证策略,提升迭代效率。验证有效后再尝试增加数据量5. 如何高效训练NLP任务汇总诸多NLP算法同学的建议,我们把高效训练NLP任务的基本流程总结如下:1.分析业务背景、明确任务输入与输出,将其抽象为已得到很好解决的NLP典型任务。 a.对于复杂任务,需要将其拆分成比较简单的子任务 b.文心已覆盖绝大部分NLP典型任务,可参考文心ERNIE工具版-支持任务。2.准备好几千条格式规范的训练数据,快速实现一个NLP模型基线。 a.最快速的方法是通过文心ERNIE平台版或者工具版,采用预制网络和模型无代码训练一个模型基线。 b.本步骤只需要您知道最基本的机器学习概念,划分好训练集、验证集、测试集进行训练即可。 c.评估训练出模型的效果,看是否满足你的业务需求,如果不满足,可考虑进一步优化模型效果。3.优化模型效果: a.各优化手段按照投入产出比排序如下 i:进一步分析你的业务背景和需求,分析基线模型的不足,进行更细致的技术选型。 ii:采用工具版进行本地小数据调试,极大地提升迭代效率。 iii:基于预制网络进行调参。 iv:自定义组网并进行调参。 v:基于核心接口进行高度自定义开发。 vi:直接修改文心核心源码进行开发。 b.每一种优化手段都都可以申请vip服务进行支持。如何自我判断采用哪种文心开发方式 典型的训练方式:无代码训练(不调参),无代码训练(自主调参),自定义组网训练,高阶自定义训练。以上4类训练方式的开发自由度、上手难度、建模的风险、模型效果的上限依次递增,性价比依次递减。本地工具包的调试、迭代效率最高。6总结:需掌握知识6.1 无代码调参建议具备的相关知识1.明确以下概念:有监督学习、标签、特征、训练集、验证集、测试集、逻辑回归、过拟合、欠拟合、激活函数、损失函数、神经网络、学习率、正则化、epoch、batch_size、分词、统计词表。2.知道回归与分类的区别。3.知道如何通过收敛曲线判断过拟合与欠拟合。4.知道准确率、召回率、精确度、F1值、宏平均、微平均的概念与区别。5.知道为什么训练集、验证集、测试集要保证独立同分布。6.知道什么是神经网络.7.知道什么是迁移学习、什么是预训练模型、什么是finetune、迁移学习的优点是什么。6.2 自定义组网建议具备的相关知识1.前提是已经掌握无代码调参建议具备的相关知识2.明确以下概念:Sigmoid函数公式、softmax函数公式、交叉熵公式、前向传播、反向传播、SGD、Adam、词向量、embedding、dropout、BOW、CNN、RNN、GRU、LSTM、迁移学习、3.知道神经网络为什么具有非线性切分能力。4.知道NLP中一维CNN中的卷积核大小、卷积核的个数各指代什么,时序最大池化层如何操作。5.知道NLP中CNN与LSTM的区别,各擅长处理哪类文本问题。6.知道为什么BOW模型无法识别词语顺序关系。7.知道为什么会梯度爆炸,以及如何解决。参考书籍: a.ML特征工程和优化方法 b.周志华《机器学习》前3章 c.迁移学习常见问题 a.CNN常见问题 b.深度学习优化方法 c.花书《深度学习》6-10章 d.《基于深度学习的自然语言处理》整本项目参考链接:cid:link_2
-
【摘要】 用户画像存储是推荐业务核心,但开源Redis无法胜任。华为云高斯Redis是最佳存储选型,轻松降本60%,同时获得企业级高稳定性。本文分享自华为云社区《华为云GaussDB(for Redis)揭秘第23期:用GaussDB(for Redis)存画像,推荐业务轻松降本60%》,作者: 高斯Redis官方博客 。一、什么是推荐系统 不知道大家有没有过这样的经历,当你前脚刚在某电商网站买了一个手机,过两天之后你再打开该电商网站,显示在首页的上必定有耳机、手机壳和蓝牙音箱等手机配件。如果你买的不是手机,而是一件衣服的话,下次打开显示的必定是和该衣服非常搭配的裤子和鞋子等。聪明的你不禁要问,为何电商网站如此强大,竟然能提前预知你的偏好,并且给你推荐你可能喜欢的商品?其实在这背后,都离不开那强大的推荐系统。 什么是推荐系统呢?首先我们来看看维基百科对推荐系统的定义:推荐系统是一种信息过滤系统,可以根据用户历史行为用于预测用户对物品的“评分”或“偏好”。简单来说,如果你是一个电子发烧友,那么系统肯定会给你推荐各种新鲜出炉的3C产品,如果你是一个coder,那么你的页面肯定充斥各种编程大全的书籍。推荐系统近年来非常流行,应用于各行各业,它推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、电商购物和游戏业务等。二、推荐系统的架构 了解了什么是推荐系统之后,接下来我们继续介绍下推荐系统的架构,以游戏行业为例,一个典型的游戏业务中的推荐系统架构设计如下: 推荐系统主要由3部分组成,分别是:行为日志收集、特征生产和特征消费。(1)行为日志收集 大数据业务收集用户的行为日志,分析获得用户画像,并且将这些用户画像保存在分布式文件系统HDFS中。(2)特征生产 工程业务负责为大数据业务提供一套接口调用,主要是“灌库”,即定时或按一定逻辑把HDFS中的用户画像加工成特征,灌入工程业务负责的“KV存储”。(3)特征消费 工程业务团队还负责将算法团队的推荐模型进行工程落地,他们开发线上推理组件,从KV存储中提取特征数据,分析计算,最终得出推荐结论,展示给用户。三、推荐系统的存储痛点 上一节中我们介绍了游戏行业中推荐系统的架构,这也是推荐系统的一个典型架构。从架构图可以看出,KV存储在整套链路中,承载着重要的承上启下作用。然而,推荐系统中的KV存储却存在着两个大的痛点,第一个是成本高,第二个是扩容慢。(1)成本高 首先第一个是成本高的问题。通常我们搭建KV存储的话首选都是选择自建一个开源Redis集群作为KV存储系统。一方面,开源Redis的数据全部放在内存中,众所周知内存的存储成本是非常昂贵的,内存只适合用于存储少量数据,如果数据量大的话,数据的存储成本将成为企业的负担;另一方面由于开源Redis在进行AOF文件重写的过程中,存在fork机制,导致开源Redis在AOF文件重写时,其内存利用率只有50%,这就进一步使增加了开源Redis的内存使用成本。(2)扩容慢 除了成本比较高,开源Redis还存在扩容慢的问题。在自建的开源Redis集群中,随着业务增长,KV存储的容量不得不进行扩容。但是由于原生Redis本身的架构特点,在扩容过程中难免要发生key的跨slot迁移,如下图所示: 如果发生slot迁移,需要耗时很久并且业务受影响时间长。四、为什么推荐高斯Redis 上一节中我们介绍了推荐系统的存储痛点,如何解决呢?要解决这两个痛点,无非是需要进行降本增效,而高斯Redis似乎就是为了解决这些问题而生。(1)降本 就降本而言,高斯Redis从两个方面降低KV数据的存储成本: 第一个方面,高斯Redis的所有数据全部落在磁盘,相比开源Redis存在内存中而言,其成本降低了75%~90%,拥有极大的价格优势。举个例子来说,一个512GB的开源Redis集群,其成本几乎要5w/月,而相同规格的实例,如果替换成高斯Redis,其成本节约40%以上,几乎节省了一个人力成本在里面。下面这张表格是不同层级的存储器之间的成本对比图。 另一方面,在推荐系统中,KV数据库主要存储的是用户画像的信息,而这些信息基本上都是经过Protobuf序列化后的信息,而高斯Redis自带的数据压缩功能,对序列化后的信息可以进行高压缩比的压缩,相对于开源Redis而言,存储空间仅仅为开源Redis的70%到85%,这又进一步降低了KV数据的存储成本。(2)增效 除了降本,另一方面就是增效了。众所周知,开源Redis的架构中,如下图所示,其存储和计算是不分离的,这就导致节点进行扩容的时候,会发生分片的迁移,从而导致业务会受到影响。 高斯Redis为了解决这个问题,采用了存算分离的架构,如下图所示: 在采用存算分离的架构下,底层数据可以被任意上层计算节点访问,扩容过程不发生数据拷贝搬迁,速度极快。节点扩容时,分钟级完成,业务只有秒级感知。容量扩容时,业务0感知。无论是扩节点还是扩磁盘容量,对业务造成的影响几乎为0。五、总结 本文简单介绍了推荐系统是什么,并且以游戏行业中的推荐系统为例,介绍了推荐系统的架构和其存在的存储痛点,并且介绍了高斯Redis如何解决该存储痛点。在这个大数据时代,推荐系统的应用会越来越多,作为推荐系统的数据存储,高斯Redis解决了开源Redis所存在的缺点,为推荐系统提供了有力的技术支撑。六、附录本文作者:华为云数据库GaussDB(for Redis)团队杭州/西安/深圳简历投递:yuwenlong4@huawei.com更多产品信息,欢迎访问官方博客:bbs.huaweicloud.com/blogs/248875
-
一、什么是推荐系统不知道大家有没有过这样的经历,当你前脚刚在某电商网站买了一个手机,过两天再打开该电商网站,首页推荐显示的必定有耳机、手机壳、蓝牙音箱等手机配件。如果你买的不是手机,而是一件衣服,那么下次打开电商网站显示的,必定是和衣服搭配的裤子和鞋子等。聪明的你不禁要问,为何电商网站如此强大,竟能提前预知你的偏好,并且给你推荐你可能喜欢的商品?其实在这背后,都离不开那强大的推荐系统。什么是推荐系统?首先我们来看看维基百科上的定义:推荐系统是一种信息过滤系统,可以根据用户历史行为预测用户对物品的“评分”或“偏好”。简单来说,如果你是一个电子发烧友,那么系统肯定会给你推荐各种新鲜出炉的3C产品,如果你是一个coder,那么你的页面肯定充满各种编程大全的书籍。推荐系统近年来非常流行,应用于各行各业,推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、电商购物和游戏业务等。二、推荐系统的架构了解了什么是推荐系统之后,接下来我们继续介绍下推荐系统的架构,以游戏行业为例,一个典型的游戏业务的推荐系统架构设计如下: 推荐系统主要由3部分组成,分别是:行为日志收集、特征生产和特征消费。 01.行为日志大数据业务通过收集用户的行为日志,分析获得用户画像,并且将这些用户画像保存在分布式文件系统HDFS中。02.特征生产工程业务负责为大数据业务提供一套接口调用,主要是“灌库”,即定时或按一定逻辑把HDFS中的用户画像加工成特征,灌入工程业务负责的“KV存储”。 03.特征消费工程业务团队还负责将算法团队的推荐模型进行工程落地,他们开发线上推理组件,从KV存储中提取特征数据、分析计算,最终得出推荐结论,展示给用户。 三、推荐系统的存储痛点上一节中我们介绍了游戏行业中推荐系统的架构,这也是推荐系统的一个典型架构。从架构图可以看出,KV存储在整套链路中,承载着重要的承上启下作用。然而,推荐系统中的KV存储却存在着两个大的痛点,第一个是成本高,第二个是扩容慢。 01.成本高首先第一个是成本高的问题。通常我们搭建KV存储的首选是选择自建一个开源Redis集群作为KV存储系统。一方面,开源Redis的数据全部放在内存中,众所周知内存的存储成本非常昂贵,只适用于存储少量数据,如果数据量大,存储成本将成为企业的负担;另一方面,开源Redis在进行AOF文件重写的过程中存在fork机制,导致开源Redis在AOF文件重写时,其内存利用率只有50%,这就进一步使增加了开源Redis的内存使用成本。02.扩容慢除了成本比较高,开源Redis还存在扩容慢的问题,在自建的开源Redis集群中,随着业务增长,KV存储的容量不得不进行扩容。但由于原生Redis本身的架构特点,在扩容过程中难免要发生key的跨slot迁移,如下图所示,跨slot迁移需要耗时很久并且业务受影响时间长。 四、为什么推荐GaussDB(for Redis)知道了推荐系统的痛点所在,该如何解决呢?究其根本是降本增效,而GaussDB(for Redis)可以说是为解决这些问题而生。01.降本GaussDB(for Redis)从两个方面降低KV数据的存储成本: 第一个方面,GaussDB(for Redis)的所有数据全部落在存储,相比开源Redis数据存放在内存中,其成本降低了75%~90%,形成极大的价格优势。举个例子,一个512GB的开源Redis集群,其成本几乎要5w/月,而相同规格的实例,如果替换成GaussDB(for Redis),其成本节约40%以上,几乎节省了一个人力成本在里面。下面这张表格是不同层级存储器之间的成本对比图。 另一方面,在推荐系统中,KV数据主要存储的是用户画像的信息,这些信息基本上都是经过Protobuf序列化后的信息,而GaussDB(for Redis)自带的数据压缩功能,可以对序列化后的信息进行高压缩比的压缩,实际占用空间仅为开源Redis的50%左右,这又进一步降低了KV数据的存储成本。 02.增效除了降本,另一方面就是增效了。众所周知,开源Redis的架构中,如下图所示,其存储和计算是不分离的,这就导致节点进行扩容的时候,会发生分片的迁移,从而导致业务会受到影响。GaussDB(for Redis)为了解决这个问题,采用了存算分离的架构,如下图所示:在存算分离的架构下,底层数据可以被任意上层计算节点访问,扩容过程不发生数据拷贝搬迁,速度极快;同时还做到分钟级节点扩容,业务秒级感知;存储扩容业务0感知。无论是扩节点还是扩存储容量,对业务的影响几乎为0。五、总结本文简单介绍了推荐系统是什么,并以游戏业务为例,阐明了推荐系统的架构和存在的存储痛点,同时GaussDB(for Redis)是如何解决这些存储痛点的。在大数据时代,推荐系统的应用场景将会越来越多,作为推荐系统的数据存储,GaussDB(for Redis)完美弥补了开源Redis的短板,能够为推荐系统提供强有力的技术支撑。
-
本文分享自华为云社区《[推荐--用图分析!](https://bbs.huaweicloud.com/blogs/320761?utm_source=zhihu&utm_medium=bbs-ex&utm_campaign=ei&utm_content=content)》,作者: 你好_TT。 # 导读 推荐系统被认为是一种用于提供给用户感兴趣的商品、内容或者服务的技术。图技术作为刻画事物之间深度链路关系的技术,常常被用来进行推荐系统的建模。本文首先介绍推荐系统以及推荐系统和图技术之间的关系,而后通过举例说明图技术如何赋能推荐系统。 # 什么是推荐系统 当用户需要连接到互联网以满足其需求时,他经常会遇到大量的相关信息。推荐系统是一种用于过滤信息并提供给用户尽量使他们满意和感兴趣的商品、内容或者服务的技术。 随着电子商务和社交媒体平台的快速发展,为了防止用户在数据海中迷失自我,推荐系统应运而生。推荐系统作为AI最成功和最重要的应用之一,帮助消费者更容易地找到相关的或感兴趣的内容、商品或者服务。  # 推荐系统的重要性 当今互联网承载着多种信息资源,数据量呈指数级增长。推荐系统在缓解信息过载这一问题上发挥着重要作用。在电商平台,一个好的推荐系统能帮助用户发现好商品,也能使高质量的商品触达精准受众。 从用户角度来看,推荐系统可以缓解信息过载带来的时间成本,从企业角度来看,可以帮助企业实现精准营销,个性化用户的体验,提升客户忠诚度,最大化企业的收益。因此推荐系统的好坏对用户和企业来说都非常重要。  # 图分析与推荐系统的关系 推荐系统里的数据本质上是一些图数据,包括用户、商品、属性在内的数据通过各种各样的关系联系在一起。而图分析技术在处理复杂关系上具有天然的优势,像随机游走、图神经网络等图技术已经被用来处理各种图并且取得了很好的效果,所以利用图分析来处理推荐问题会是一个自然且明智的选择。  而且,图分析有利于建立可解释的推荐系统。深度学习主导下的推荐系统的黑盒机制使得人们越来越关注推荐系统的可解释性,受益于图分析的因果推理的能力,基于图分析的推荐系统能很好地支撑推荐结果的可解释性。  # 推荐系统中的图结构 推荐系统中会包含很多不同类型的实体,例如用户、商品、属性等等,而他们之间又会通过各种关系联系在一起,例如用户之间的社交关系,用户和商品之间的交互关系等。这些不同的实体和关系构成推荐系统底层的数据集。推荐系统底层的数据可分为以下几种结构。 ## 层级结构 一般地,所有的商品会根据特定属性(例如:产品的类别),被组织成层级结构。例如,华为商城的所有产品被分成许多类(包括手机、配件、智慧屏幕等),每类产品又会被分成小类(手机被分成Mate系列、P系列等),每个小类可能包含各种具体的产品。这种层级结构本身就揭示了产品之间丰富的关系。来自不同但相近的类别的产品可能存在互补的关系(例如手机和保护套),这有利于提升推荐的质量,另外,这也有利于避免重复推荐类似产品,从而提升推荐产品的多样性。 ## 单部图 在推荐系统中,至少有两个单部图需要考虑,即用户社交关系网络和产品的共现关系网络或会话图。在社交关系图中,用户的偏好和购买行为会互相影响,产品的共现关系不仅体现了产品的互补或者竞争的关系,也显示了用户的消费模式,这些都是在做推荐的时候需要考虑的因素。 ## 二部图 用户和商品之间的关系(点击、购买等)是推荐系统的核心,这可以建模成二部图。此时推荐可以看作一个链接预测问题。 ## 异构图 为了有效解决上述用户-商品二部图稀疏性的问题,也为了建立更加鲁棒和可靠的推荐系统,有许多相关的信息可以被考虑进来,包括用户的个人信息、用户的社交关系、商品特性、商品共现关系等等。一般来说,我们对用户的偏好和购买行为以及产品的特性了解得越多,推荐的效果就会越好。  # 推荐系统的图分析方法 ## 随机游走 随机游走的原理是从某一个点出发,以特定的概率游走到这个顶点的邻居节点,每次游走后得到一个概率分布,该概率分布刻画了图中每个节点被访问到的概率。经过一定步骤后,根据每个节点被访问到的概率对节点进行排序作为推荐结果。受益于随机游走特殊的工作机制,其在复杂、高阶的数据图上获得了很好的推荐效果。 ## 图表示学习 图表示学习方法一般将图中每个点编码成低维度的表示,这些表示蕴含着图的结构信息,这些表示将用于后续的推荐任务。  ## 图神经网络 例如:图卷积神经网络通过利用图的结构和点的特征信息去学习怎样不断地聚合局部结构地特征。一般来说,通过卷积和池化操作,图卷积网络有能力从节点的邻域学习到有价值的特征信息。 ## 知识图谱 基于知识图谱的推荐系统一般利用外部的知识建立知识图谱,以探索用户或者商品之间隐藏的关系,这样有利于更好的推荐。更重要的是,由于利用了外部的知识,基于知识图谱的推荐系统对用户的行为和产品的特性提供了更好的理解,从而提升了推荐结果的可解释性。 # 基于华为云图引擎GES进行推荐的例子 ## 好友推荐  在这个例子中,我们向李雷推荐好友,思路是向他推荐其好友的好友,但是推荐的好友中不应包含李雷本身的好友,比如图中小梅同时是李雷的好友,也是李雷好友的好友,我们不应该向李雷推荐小梅,因为她已经是李雷的好友了。我们可以通过下面的gremlin语句来实现上述推荐: `g.V("李雷").repeat(out("friend").simplePath().where(without('1hop')).store('1hop')).times(2).path().by("name").limit(100)` ## 电影推荐  这是一个异构图的例子,实体包含user,movie,genre,actor,director等,我们想 向Frank推荐电影,我们利用GES内置的实时推荐算法来实现。实时推荐算法是一种基于随机游走模型的算法,主要的输入参数是sources和label,sources表示请求节点的id,label表示期望得到的推荐的节点类型,具体的参数说明可以参考链接实时推荐算法,返回参数中,score展示了各节点的推荐值,反应了其推荐程度。  { "score": 1494, "id": "The Sixth Sense" }, { "score": 1233.0000000000002, "id": "Artificial Intelligence" }, { "score": 519, "id": "Lincoln" }, { "score": 441, "id": "Ready Player One" } # 基于GES的推荐系统的优势 酷狗、华为商城基于GES构建自己的推荐系统,取得了非常好的效果, 相关链接(基于人货场的电商知识图谱的构建https://bbs.huaweicloud.com/forum/thread-67525-1-1.html)总的来说,基于GES的推荐系统有以下几个方面的优势: ## 实时推荐 在线应用程序必须做出即时的推荐,GES的高性能能帮助建立实时推荐系统。 提供高质量、可解释性的推荐结果 提供的推荐结果对用户来说是真正有价值的,而且可以回答为什么的问题。 ## 方法的多样性 GES提供多种方法帮助构建推荐系统,结果更准确。 ## 实现商业目标 帮助企业实现高收入、低成本的目标,提升用户满意度,节约时间成本。 # 参考文献: 1. Graph Learning Approaches to Recommender Systems: A Review(2020) 2. DKN: Deep Knowledge-Aware Network for News Recommendation(2018) 3. Dressing as a Whole: Outfit Compatibility Learning Based on Node-wise Graph Neural Networks(2019)
-
递归神经网络已被证明可以有效地建模推荐系统的连续用户反馈。然而,它们通常只关注项目的相关性,而不能有效地为用户探索不同的项目,因此从长远来看会损害系统性能。为了解决这一问题,我们提出了一种新的递归神经网络,称为递归探索网络(re - exploration networks, REN),该网络可以联合执行表征学习和潜在空间的有效探索。REN试图平衡相关性和探索,同时考虑到表现中的不确定性。我们的理论分析表明,即使在学习的表征中存在不确定性,REN仍能保持最优率的次线性遗憾。我们的实证研究表明,REN可以在合成和真实的推荐数据集上获得令人满意的长期回报,优于最先进的模型。https://www.zhuanzhi.ai/paper/4b73b324ed99c6efe645d865c83fa1c1
-
【转载华为云社区】1. 使用华为ECS云服务器的系统是EulerOS_2.2,安装docker出现依赖包的问题,在CCE敏捷版安装包(本地部署)里面有EulerOS_2.2,EulerOS_2.3和EulerOS_2.5的docker版本,但是EulerOS_2.2里面的docker依赖包低于EulerOS_2.2,不能安装。我选择EulerOS_2.5的docker-engine-18.09.0版本。2. 安装keepalived,在考虑是否给/etc/keepalived目录权限,测试时,使用ansible命令 发送指令给k8s-mas组云服务修改/etc的权限,导致这三台服务器root密码出问题,即使密码正确也无法登陆,而且普通用户的sudo也无法使用。但是使用普通用户能登陆系统。3. 尝试解决的办法:把mas1的系统盘挂载到其他正常云服务器上,为了方便,把/etc的文件拷贝到mas1上,重新挂回mas1时,开机出现无法找的IP和Error getting authority: Error initializing authority: Could not connect: No such file or directory。之后想重新安装系统,但是购买的是MRS集群定制版本,是无法重新安装系统。想了一个办法,购买一台与之相同配置云服务,安装相同EulerOS_2.2系统后,把系统挂载挂载到mas1上,提示是数据盘而不是系统盘,无法启动系统。这个方法失败。4. 在CDN论坛上https://blog.csdn.net/mingyue0311/article/details/84580705看到解决方法,原因是之前复制了其他服务器的etc,要修改/etc/fstab,首先要blkid -s UUID /dev/vdb查看硬盘的UUID,把UUID填到fstab,保存后mount -a -t ext4 /dev/vdb /srv/BigData。重启服务,硬盘数据和IP都正常。其他2台服务器,对着正常服务器的etc里的目录权限跟着修改即可。5. 总结:以后使用云服务记得要养成给系统盘做快照习惯,便于以后的维护,华为云是在云硬盘做快照。
-
【转载华为云社区】【摘要】 配置过程中,修改主机名和其映射时,发现域名很长,修改域名后,连接其他主机会多大概20秒的延迟。之前使用主机少,不需要学习了ansible.。现在要部署在10台服务器,使用域名或IP都不方便。所以还特意找相关资料学习。Ansible 是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新。Ansible 适用于管理企业IT基础设施,从具有少数主机的小规模...配置过程中,修改主机名和其映射时,发现域名很长,修改域名后,连接其他主机会多大概20秒的延迟。之前使用主机少,不需要学习了ansible.。现在要部署在10台服务器,使用域名或IP都不方便。所以还特意找相关资料学习。Ansible 是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新。Ansible 适用于管理企业IT基础设施,从具有少数主机的小规模到数千个实例的企业环境。它也包括命令行和Playbook。因为只是为了方便部署平台,所以简单学习了一下命令行,以后有时间再学习playbook.如果有对playbook感兴趣的,可以上github网站,那又很多自动部署的代码。 简单说一下Ansible的好处:1. 简化一下命令,比如把一个文件传输给10台主机,要写10条命令或写循环语句,但是用ansible就一条命令,让10台主机向有文件的服务器复制下来。而且占用资源少。2. 解决域名过长的问题,给过长的域名打上简洁的标签。而且可以根据部署的需要,给主机分组,发送命令时,可以根据主机的需要,来做简单的定制化。ansible k8s-mas2,k8s-,node -m shell -a 'scp -r mas1.7d2ee78c-9117-4668-bacb-57c2c5720e7c.com:/opt/softwares/k8s1.14 /opt/softwares/'#注意,ansible只需要按照在一台主机上,而且设置的标签只有这台主机才能使用。
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签