宾馆和酒店有什么区别| 为什么口腔溃疡| 安然无恙的恙是什么意思| 什么水果能马上通便| forever21是什么牌子| 什么什么大什么| 吃了避孕药有什么副作用| 入心是什么意思| kpi是什么意思啊| 什么是疣图片| 鹿字五行属什么| 子宫肌瘤手术后吃什么好| 林俊杰什么时候出道的| 感冒吃什么水果| 涵字属于五行属什么| 开什么节什么的成语| 吃什么变碱性体质最快| 为什么说金克木生财| 奚字五行属什么| 流清鼻涕吃什么药| 女人吃槐花有什么好处| 包皮过长会有什么影响| 输卵管堵塞吃什么药能打通| 低脂是什么意思| 八仙过海是什么意思| 头七有什么讲究| 早泄是什么症状| 蓝色的猫是什么品种| 紫色五行属什么| 血钾低会有什么症状| 梦见去看病是什么意思| fat是什么意思| 彻夜难眠什么意思| 周瑜和诸葛亮是什么关系| 尿路感染有什么症状| 喝黑芝麻糊有什么好处| 脱疽是什么意思| 小腿经常抽筋是什么原因| 梦见蛇咬我是什么意思| 梦见女儿哭意味着什么| 老年痴呆症是什么原因引起的| 结肠炎有什么症状| 早上起来手麻是什么原因| 社会公德的主要内容是什么| pt代表什么| 宫腔镜手术是什么手术| 鞭长莫及什么意思| 胆固醇高吃什么食物好| 明天是什么| 情商是什么意思| 头皮屑多是什么原因怎么去除| 汐五行属性是什么| 海狗是什么| 汉堡里面的白色酱是什么酱| 什么样的羽毛| 左腹下方隐痛什么原因| 3月19日什么星座| 油茶是什么| 姨妈安全期是什么时候| 汗斑是什么| 总胆固醇高有什么危害| 台湾什么时候统一| 舌头麻什么原因| 豆豉是什么东西| 肾脏彩超能检查出什么| 心可舒治什么病| 甲状腺滤泡性肿瘤是什么意思| 西瓜可以做成什么美食| 口腔溃疡吃什么药好| ti是什么意思| 甲状腺有什么作用| 庸人自扰什么意思| 时令水果是什么意思| 1989年出生的是什么命| 六月份什么星座| babies是什么意思| 胶体金法是什么意思| 男士感染霉菌用什么药| 什么的滋味| 五角硬币是什么材质| 高烧不退是什么病毒| 晚上八点多是什么时辰| 嘻哈是什么意思| 测怀孕的试纸叫什么| 蜈蚣长什么样子| 穆斯林是什么| 双肺纹理粗重什么意思| 白质脱髓鞘是什么病| 楠字取名有什么寓意| 湿疹什么原因引起的| 感冒发烧吃什么饭菜好| 才高八斗是什么生肖| 什么弓什么箭| 粉蒸肉的粉是什么粉| 结婚五周年是什么婚| 怀男孩和女孩有什么区别| 嗜酸性气道炎症是什么意思| 处女膜什么样子| 老年痴呆症又叫什么名字| 节律是什么意思| 头是什么意思| 什么的生长| 维纳斯是什么意思| 为什么想吐却吐不出来| 变格是什么意思| 肺部感染是什么症状| 阴历三月是什么星座| 法学是干什么的| 尿急尿痛吃什么药| 程咬金是什么意思| 梦见买衣服是什么预兆| 艳羡是什么意思| 12月14号是什么星座| 太后是什么意思| 血小板减少是什么病| 口舌生疮吃什么药| jk制服是什么意思| 槟榔长什么样子| 庸医是什么意思| 菜板什么木材最好| 晚上没有睡意什么原因| sg是什么意思| yet是什么意思| 马与什么属相相克相冲| 证候是什么意思| 椭圆形脸适合什么发型| 广西古代叫什么| 闺六月是什么意思| 女人为什么比男人长寿| 五花肉炒什么配菜好吃| 什么时候敷面膜效果最好| 什么床最环保没甲醛| 七夕节干什么| 小孩瘦小不长肉是什么原因| 大便感觉拉不干净什么原因| 什么叫走读生| 睾丸癌是由什么引起的| 一本万利是什么生肖| 娘惹是什么意思| 脚底冰凉是什么原因| 碘是什么颜色| 润字五行属什么| 肛门坠胀吃什么药| 也许是什么意思| 工装裤配什么鞋| 阴道痒用什么药好| 子宫在肚脐眼什么位置| 胃酸的主要成分是什么| 为什么不建议打水光针| 肺部有问题一般会出现什么症状| 肝胃不和吃什么中成药| 长裙配什么鞋| 阴虚火旺是什么意思| 什么叫留守儿童| 赛脸什么意思| 李世民是什么生肖| 压片糖果是什么意思| 闲敲棋子落灯花上一句是什么| 奶奶过生日送什么礼物| 痛风是什么引起的| 包皮手术是什么| 葡萄糖为什么叫葡萄糖| 酸奶坏了是什么味道| 反流性食管炎吃什么药| 生理盐水有什么作用| 命悬一线的意思是什么| 操逼什么意思| 开诚布公是什么意思| 胚芽是什么意思| 商贩是什么意思| 白果有什么功效与作用| 吃什么对大脑记忆力好| 何去何从什么意思| 3月6号是什么星座的| 血管痉挛是什么原因引起的| 聿字五行属什么| 客厅用什么灯具好| 扁桃体发炎引起的发烧吃什么药| 化疗后骨髓抑制是什么意思| 剖腹产后可以吃什么| 为什么总是想睡觉| 牛的尾巴有什么作用| 检查乳房挂什么科| 可望不可求是什么意思| 水痘不能吃什么食物| 胆囊切除有什么后遗症| 检查颈椎挂什么科| 头痛眼睛痛什么原因引起的| 泻立停又叫什么名字| 什么是人| 市监狱长是什么级别| 馒头逼是什么意思| 锐字五行属什么| 湿疹什么原因引起的| 淋巴癌有什么症状| 女性生活疼痛什么原因| 五指毛桃有什么功效| 男人梦见猫是什么意思| 不停的出汗是什么原因| 宫颈病变是什么原因引起的| bruce是什么意思| 南极和北极有什么区别| 荡秋千有什么好处| 男人吃四环素治什么病| 夏天什么时候结束| 千娇百媚是什么意思| 梦到自己长白头发是什么意思| 壁报交流是什么意思| 吃头孢不能吃什么| 胎儿打嗝是什么原因| 杏仁是什么树的果实| 荨麻疹吃什么药效果好| otc代表什么| 合胞病毒吃什么药| 黄体酮吃了有什么副作用| 肝血虚吃什么药| 袋鼠吃什么| courvoisier是什么酒| 五味子有什么作用| 心悸是什么症状| 体内湿气重吃什么食物| 女性阴毛变白是什么原因| 肾结石炖什么汤喝最好| 五谷有什么| 房性期前收缩是什么意思| 吃什么药能冲开宫腔粘连| 女人绝经一般在什么年龄段| 开业送什么礼物好| 卡马西平是什么药| 两侧肋骨疼是什么原因| 指甲黑线是什么原因| 早上5点多是什么时辰| 舌头有裂痕是什么原因| 常喝蜂蜜水有什么好处和坏处| 粥配什么菜最好吃| 小孩嘴唇发白是什么原因| 脚臭用什么药| b型血和ab型血的孩子是什么血型| 艾滋病是什么引起的| 戴尾戒是什么意思| 79年属什么| 什么呀| 烧心吃什么食物好得快| 什么是什么的眼睛| 1961年属什么生肖| 八府巡按是什么官| 孕妇吸二手烟对胎儿有什么影响| 不管事是什么意思| 螨虫用什么药可以杀死它| 乐极生悲是什么意思| 父亲是o型血孩子是什么血型| 鼻尖出汗是什么原因| 检查肝脏应该挂什么科| 细菌性毛囊炎用什么药| mA是什么| 回苏灵又叫什么| 627是什么星座| 烫伤起泡用什么药膏| 干事是什么级别| 塔利班是什么| 余字五行属什么| 输血四项检查是什么| 都有什么血型| 幼儿园什么时候开学| 百度

美国六位大使公开信:别把亚太领袖地位让给中国

人工智能 算法
本文将分享 EasyRec 推荐算法训练和推理优化。EasyRec 推荐算法训练整体框架主要包括:数据层、Embedding 层、Dense 层和输出层。这个架构可以在多种平台上运行,包括 MaxComput、开源大数据平台 EMR 和深度学习的容器平台 DLC。
百度 对于容易被煽动起来的网民:推送各种耸人听闻、容易激起强烈情绪的标题党内容。

一、EasyRec 训练推理架构

图片

在介绍 EasyRec 的训练推理架构之前,先来谈谈推荐模型的发展趋势和面临的挑战。近年来,推荐模型的发展呈现出以下一些趋势:首先,特征数量越来越多,从几百个增加到上千个,还有许多交叉特征;同时,Embedding 变得越来越大,序列越来越长,Dense 层也越来越复杂,从简单的 MLP 发展为 MMOE、MaskNet、PLE 等复杂结构。由此带来的最大挑战就是算力不足,另外训练推理成本很高,推理超时严重。

图片

EasyRec 推荐算法训练整体框架主要包括:数据层、Embedding 层、Dense 层和输出层。这个架构可以在多种平台上运行,包括 MaxComput、开源大数据平台 EMR 和深度学习的容器平台 DLC。

此架构的优势是支持配置化、组件化,包括深度支持 Keras 组件,能自定义组件,并通过配置接入各种模型。它还支持大规模分布式训练、ODL,以及基于 NNI 的自动调参,搜索最优超参数,和自动特征选择。支持推荐模型中的常用功能,如 MultiOptimizer,设定 Embedding 和 DNN 层不同学习率和优化器,以及特征热启动,大规模负采样等。如果模型训练中断,可以使用 Work Queue 从断点恢复训练,显著提升了大型任务的训练成功率。此外,在 TF 框架上扩展了分布式 Evaluator,支持大数据量的模型评估。

图片

接下来介绍推理框架 PAI-REC 引擎,这是整个推荐链路的一个重要部分。PAI-REC 引擎串联推荐业务的各个阶段,常见的阶段包括召回、排序、重排和打散。PAI-Rec 引擎基于 go 语言编写,具有比较高的效率,同时也是模块化的,因此具有比较强的扩展性,进一步还提供了用户友好的界面,方便用户配置 ab 实验,做特征一致性诊断,分析特征和实验效果等关键功能。

与 EasyRec 相关的是 EasyRecProcessor,负责精排和召回模型的在线推理。主要包括三个部分:item 的 Feature Cache,Feature Generator 和 TF Model。EasyRecProcessor 进行了大量的 CPU 和 GPU 推理优化,如通过 item 特征缓存减少 item 静态特征带来的网络传输压力,通过增量更新加快模型传输和部署的速度,在 Feature Generator 和 TF Model 模型推理上也有很多优化,下面进行详细介绍。

图片

EasyProcessor 支持在 PAI-EAS 平台上一键部署。该框架已经在阿里云上得到了广泛应用,已服务数百家客户,覆盖电商、直播、文章分享、视频分享、广告和社区等多种业务。同时,在阿里内部也有很多客户在使用该框架。

图片

我们曾服务过一个电商导购案例,通过优化,不仅提升了效果,还显著降低了成本,我们针对推荐的各个链路都进行了升级和优化。

二、EasyRec 训练优化

图片

接下来讲一下 EasyRec 在训练方面的优化。随着 sequence 长度的增加,算力、存储和网络开销显著增大。我们发现一次曝光会下发很多 item,而这些 item 的 SequenceFeature 大多相同。通过去重操作,例如一个 8192 的 batch_size,去重后可能只剩下原来的 5% 到 10%。因此,对 SequenceFeature 进行去重,只存 request_id,再通过 iGraph 查找 SequenceFeature,经过 embedding layer 和 deunique 处理,得到 batch seq_embedding。这个优化提升了系统吞吐量 20%。考虑到可迁移性,我们目前的 unique 实现基于 Python,若改用 C++,性能将进一步提升。

图片

另一个优化是 EmbeddingParallel,即 embedding 分片优化。以往多采用 PS-Worker 模式,尽管扩展性好,但存在问题,如 ps 通信量大,算力不足,以及 embedding 划分不均匀影响训练效率。算子 placement 不当,如 unique 算子被错误地放在 ps 上,也会造成瓶颈。All-Reduce 模式是另一种选择,所有 Worker 存储相同参数,避免了 ps 的通信和计算瓶颈。但这种架构的问题是 embedding 容量受单机内存限制,难以实现多机扩展。

图片

EmbeddingParallel 优化中,每个 Worker 独立存储 dense 参数,但 Sparse 参数分片存储在每个 Worker 上,避免了 All-Reduce 模式的内存瓶颈。dense 参数通过 All-Reduce 更新,小型和桶化的 embedding 也是如此,大型 embedding 则通过 AllToAll 更新。

在 CPU上,我们采用 DeepRec 的 lock-free hash table,比 google 的 dense hash table 效率更高。在 GPU 上,采用 hugectr 的 sok embedding,通过 GPU 缓存的方式加载热点 embedding,减少 embedding h2d 的开销。在训练效果上,MMOE 和 PPNet 模型的对比显示,PS 模式下每秒约 3.5 步,而 EmbeddingParallel 架构显著提升了训练速度。由于参数保存在不同 Worker 上,需额外工作聚合 embedding,导出单机可 serving 的模型。EasyRec 框架已实现这一功能,直接可用。

图片

我们在 CPU 上的另一个训练优化,针对仍使用 CPU 架构进行训练和推理的客户。推荐模型的 Dense 层越来越复杂,导致计算量大增。分析模型时间线发现,MatMul 占据 60% 以上的计算时间。为提升 MatMul 这类算力密集型算子的性能,我们与英特尔合作,利用 AMX 计算能力,进行矩阵 BF16 加速,其算力比普通 CPU 高约 16 倍。在实际模型训练中,采用 AMX 功能优化,显著提升了训练速度。

三、EasyRec 推理优化

图片

接下来介绍一下 EasyRec 推理方面的优化。首先是 Embedding 部分的优化,大部分 Embedding 仍然放在 CPU 上。如果用 TF 的 feature column 构造 embedding layer,会发现存在很多小的算子,如 unique 和 SparseSegmentMean,这些小算子带来大量启动开销,影响整体性能.

针对常用的 Embedding 模式,做了一些融合算子优化,并通过 AVX 进行并行加速。比如一个 sequence 算子,可能包含几百个小算子,优化后变成一个算子,计算开销降低且通过 AVX 加速,性能大幅提升。实际应用中,算子数量减少 50% 以上,响应时间(RT)也减少一半以上。

图片

我们发现半精度计算可以加速推理并减少内存占用,尤其对大模型的内存开销影响显著。实验表明,大部分模型将模型量化为 BF16 对 AUC 基本没有影响。在 BF16 到 float 的转换中,原生 TensorFlow 的转换速度较慢,我们尝试用 AVX 进行加速,结果显示 QPS 和 RT 显著提升。基于此,我们进一步尝试了 AMX 的矩阵乘法加速,能够进一步提升约 10% 以上。

图片

接下来介绍一下我们在 Feature 层的优化。很多算子用 string 表示,如 look up feature 会解析 string 并构建 map,带来开销。我们用 AVX 优化了 StringSplit。在构建 HashMap 时,默认使用 MurmurHash,虽然冲突概率小,但特征解析时,HashMap 规模不大且用时短。采用更高效的 CrcHash 和 XorHash,均用 AVX 实现,替换 MurmurHash 后,RT 降低 5% 以上。

另外是 SequenceFeature 优化,使用 item feature cache,减少了远程网络访问开销,提高了 sequence 在推理侧的性能,但是带来了一个新问题:内存占用较大。我们设计了一种紧凑的存储格式,内存开销相比普通的存储方式降低了 80% 以上。进一步我们将 Feature 处理算子封装为 TensorFlow op,支持并行执行,复用 TensorFlow 线程池,实现 feature generation 和 embedding look up 的 overlap 执行,并减少减少数据序列化和网络传输的开销。整体优化后,RT 减少 20%,QPS 显著增加。

图片

这是实际采集的 timeline,显示优化前的情况,其中很多时间花在 match feature,字符串解析、拼接和 tensor 填充上,开销较大。优化后,这些额外的解析和拼接操作都消除了,主要只剩下 match feature 本身的开销。

图片

接下来讲常用的 user feature tile 优化。许多 user feature 和 sequence feature 在一次请求中只需计算一次,但导出模型时,算法同学未考虑这个情况。因此,我们在 processor 侧进行 tile 优化(自动 broadcast)。在输入层补齐 user feature 并做 tile 的效率有限。

进一步提升是在 embedding look up 后进行自动 broadcast,节省计算开销。实际测试中,QPS 显著提升 30% 到 50%。整个优化流程是找到需要 broadcast 的算子,很多算子可自动 broadcast,但 select 和 concat 等特殊算子需要对输入进行 broadcast 处理以确保正确执行。找到这些候选算子后进行 top 排序,再对排序后的算子逐一 Tile。Tile 过程中,部分算子 Tile 后使其他算子无需再 Tile,因此只需选择未 Tile 的算子继续 Tile,实现自动 broadcast。我们通过分析全图来将 tile 尽可能后置,以最大化的降低计算量。

图片

接下来讲 GPU 上的优化,GPU 优化最重要的是 Placement 优化。GPU 的算力强吞吐高,但启动开销高。通常我们会把 embedding 放在 CPU 上,因为 OP 数目多且单个 OP 计算量小,放在 GPU 开销大于执行时间。这样用 GPU 反而不如 CPU 效率,加上 CPU 侧有很多 AVX 优化,要 GPU 超过 AVX 的效率就更难了。

GPU 主要负责 Dense 计算。Dense 计算量大,OP 执行时间超过 kernel launch 开销,所以用 GPU 性能提升显著。除 kernel launch 外,还要考虑数据拷贝,embedding 到 Dense 的拷贝次数和数据量对性能影响大。我们用 Min-Cut 方法在图中找到最优分割点,将 Embedding Lookup 部分放在 GPU 上,后续 Dense 计算前面在 CPU,后面在 GPU,减少 H2D Memcpy 开销。

图片

即使进行了 placement 优化,但发现仍有一些模型的 GPU 利用率很高,达到百分之八九十,但整体吞吐仍然不理想。主要原因在于 GPU 的算子,比如 MatMul 和许多 elementwise 算子(如 batch_norm、sigmoid、softmax),在 CPU 上计算效率较高。这些算子属于访存密集型算子,访存和调度开销较大,不能充分发挥 GPU 的计算能力。因此,我们考虑使用 XLA 进行算子融合,减少 kernel launch 开销,提升系统吞吐。

XLA 主要是 TF to XLA,包含以下流程:自动圈图(AutoCluster),将目标算子圈出,生成 function library;然后 TF2XLA Compiler 优化,转为 HLO 的 XLA 表示;最后通过 LLVM 编译优化到 Cuda。

我们遇到的问题主要是 Dynamic shape,采用的方法是对 XlaRun 的 OP 进行 Padding,执行后再剪切出有效的部分,以减少编译优化导致的动态重编译问题。优化后效果显著。优化前 RT 高,QPS 不高;优化后 RT 显著下降,QPS 提升。即使在一些 GPU 利用率不高的场景下,XLA 融合后 RT 也明显下降。

图片

刚刚讲了 XLA 存在动态形状的问题,随后我们尝试了 TRT(dense layer optimization)优化。TRT 的流程类似,先拆分部分 OP 进行 cast 圈图,再转成 TRT 表示,最后用 TRTEngineOp 执行。TRT 对 BatchNorm、Add、ReLU 等 elementwise 算子进行了深入融合。一个优势是对 dynamic shape 有支持,可以指定 range,在一定范围内避免重编译。另一个优势是 TRT 支持量化,如 BF16 转换。

我们在算力密集的 Dense 层进行了实验,QPS 提升明显。TRT 的缺点是作为闭源系统,问题排查较困难。所以我们结合 XLA 和 TRT 进行模型优化。

关于 dynamic shape,更加优雅的解决方案是 blade-disc,现有的使用方式是离线将模型转成 ONNX 后,用 blade-disc 优化并加载。实时优化尚未实现,未来我们会逐步在 EasyRec Processor 中引入 blade-disc compiler 的 dynamic shape 功能。

图片

在广告场景中,实际的 batch size 较小,即使进行了 XLA 优化,吞吐量仍然不理想。单个 Batching 执行时,kernel launch 的开销仍然较大。

我们进行了 batch 优化,将多个小 batch 组装在一起,由 GPU 执行。embedding lookup 之前,每个 batch 仍单独在 cpu 上执行,lookup 之后组装成一个大 batch 提交到 gpu 上执行。Batch 模式的一个差异是在 feature tile 层需要进行更多的 broadcast 操作。像 Add、Sum、Mul 这些 OP 在 batch 处理后无法自动 broadcast,因此在 feature tile 层对这些 OP 进行处理,使其在多个小 batch 上也能自动 broadcast。broadcast 完成后,再 concat 并交由 GPU 执行大的 batch。

在广告场景中,这种优化显著提升了 QPS,尤其在 CVR 和 CTR 方面效果明显。

图片

接下来介绍我们在网络直连和请求压缩方面的优化经验。之前在 PAI-EAS 上部署 EasyRec 推理服务时,通过 Client 请求 Nginx 网关负载均衡,会增加一次网络转发。改用直连方式后,客户端定期刷新 pod 的 IP,减少一次网络转发,RT 降低约 5 毫秒。

另一个问题是在客户和我们机房之间做专线连接时,请求流量较大,高 QPS 场景下流量可能达到几十 Gbps,给专线带来压力。我们考虑请求压缩,尝试了 gzip、snappy 和 zstd 等方式,最终选择 snappy 和 zstd,既对 RT 影响小,又显著降低流量压力,10Gbps 流量大约减少了五倍,大大减轻了专线压力。

四、实时学习 Online Learning

图片

接下来介绍我们在 online learning 上的工作。Online learning 现在应用非常广泛,尤其在新品上架和热点更新等需要及时响应的场景中。此外,大促活动时样本分布变化快,需要 embedding 参数和 dense 参数快速更新。online learning 的核心步骤包括:流失样本、流失训练和增量参数更新。

图片

这是在 EasyRec 中使用 online learning 进行实时更新的主要流程。首先,我们通过 PAI-REC 实时回流日志和特征到 SLS 日志系统,并通过特征埋点回流到 Datahub 中间件。我们在 Flink 上构建了一套完整的样本聚合和 label 生成流程,支持配置化的方式构建流式训练:从日志生成训练样本,聚合 Datahub 埋点特征,最终生成实时训练样本并存储在 Datahub 中间件和实时消息队列中,推送到实时训练系统。

实时训练系统定期从 Datahub 拉取训练样本进行训练。训练完成后,会定期保存增量参数到 OSS,并同步到 EAS 的 Processor。我们在稳定性和一致性方面做了优化,通过特征埋点提高特征一致性,并采用 flink 的 gemini kv 分离方式提升样本和特征 join 性能。我们还对特征进行 Lz4 压缩,提高 join 的稳定性和效率。

针对实时场景中的异常数据,我们进行了过滤和去重,如处理延迟或异常上报的 timestamp 和重复调用的 callback。对于延迟到达的正样本,进行延迟下发校正训练。这些优化在新品和内容场景中效果显著。

图片

这是一些参考文献,包括 EasyRec 和 Processor 的一些文档,以及全链路推荐系统 PAI-REC 和特征工程的相关文档,这些都是构建整个阿里云上推荐系统的主要组成部分。

责任编辑:姜华 来源: DataFunTalk
相关推荐

2025-08-05 09:33:37

视觉模型训练

2025-08-05 14:20:00

数据模型

2025-08-05 10:47:59

架构实践美团

2025-08-05 09:10:00

分布式训练实践

2025-08-05 09:19:32

2025-08-05 15:03:13

推荐系统算法

2025-08-05 03:11:00

2025-08-05 18:43:50

GPU模型隔离

2025-08-05 07:30:00

推荐算法推荐系统

2025-08-05 14:05:00

训练模型AI

2025-08-05 14:11:56

2025-08-05 08:25:48

2025-08-05 16:41:17

2025-08-05 14:39:56

EdgeBoard

2025-08-05 07:30:51

2025-08-05 11:37:40

机器学习人工智能进化算法

2025-08-05 09:46:29

2025-08-05 19:57:30

NLP 工具TurboNLPExp

2025-08-05 13:56:06

英伟达训练模型

2025-08-05 09:35:34

点赞
收藏

51CTO技术栈公众号

舌头发热是什么原因 摧枯拉朽什么意思 喝醉是什么感觉 孩子发烧挂什么科 规培结束后是什么医生
养殖什么赚钱 看见蝙蝠有什么预兆 腿抽筋是什么原因引起的 芥蒂是什么意思 今年43岁属什么
女性睾酮高意味着什么 迅雷不及掩耳之势是什么意思 什么情况下要做肌电图 主动脉迂曲是什么意思 睡觉经常流口水是什么原因
云雾茶是什么茶 苯甲酸钠是什么 观音坐莲是什么意思 摘胆对身体有什么影响 意大利面是用什么做的
什么时候锻炼身体最佳时间hcv8jop3ns0r.cn 日有所思夜有所梦是什么意思hcv8jop8ns9r.cn 世界上最大的海洋是什么hcv8jop1ns0r.cn 青蒜炒什么好吃hcv8jop1ns6r.cn 欧尼是什么意思hcv8jop8ns6r.cn
隐翅虫皮炎用什么药膏hcv8jop9ns2r.cn 夏天适合用什么护肤品hcv8jop5ns1r.cn 求人办事送什么礼物好hcv9jop2ns7r.cn vans什么意思tiangongnft.com 皮肤变黄是什么原因hcv9jop4ns8r.cn
后年是什么生肖hcv9jop8ns1r.cn 腹泻吃什么药最有效hcv8jop1ns9r.cn 医院属于什么性质的单位hcv9jop0ns0r.cn qs排名是什么意思dajiketang.com doki是什么意思hcv9jop2ns2r.cn
音欠读什么weuuu.com 洁尔阴洗液有什么作用hcv9jop2ns5r.cn 印尼用什么货币hcv8jop7ns7r.cn 护身符是什么意思hcv8jop3ns7r.cn 逝者如斯夫是什么意思hcv8jop4ns3r.cn
百度