关于meta:展心展力-metaapp基于-DeepRec-的稀疏模型训练实践

1 背景举荐场景大模型在国内的应用很早,早在 10 年前甚至更早,百度曾经用上了自研的大规模分布式的 parameter server 零碎联合上游自研的 worker 来实现 TB 级别的万亿参数的稠密模型。起初,各家平台也陆续基于这种计划,开发了本人的分布式训练零碎,广泛特点是大量应用 id embedding,因而参数量微小,模型大小也十分夸大。当然,随着开源训练工具 TensorFlow/Pytorch 的风行,应用 TensorFlow/Pytorch 作为 worker,联合自研 ps 的计划也非常风行。究其原因,以 TensorFlow 为例,尽管内置了分布式训练零碎,然而对于大规模 id embedding 的反对却十分蹩脚,无奈作为残缺的平台应用。而应用 TensorFlow+ 自研 ps 的计划也存在不少问题,比方自研 ps 个别对于特色输出都有特定的要求、二次开发老本比拟低等。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1200344?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

May 11, 2023 · 1 min · jiezi

关于meta:Meta公司内部项目RaptorX将Presto性能提升10倍

概要速览RaptorX是Meta(前“Facebook公司”,下文统称“Meta”)公司的一个外部项目名称,目标是为了升高查问提早,让Presto的查问性能大大超越原生(vanilla) Presto,这篇文章介绍了RaptorX的要害模块——分层缓存。 有了分层缓存,咱们可能将查问性能晋升10倍。这一新的架构不仅能够完胜像Raptor之类以性能为导向的连接器,还具备向存储拆散化(即存算拆散架构)进行继续拓展和反对的额定劣势。 存储拆散化存在的问题存储拆散化是行业朝着独立存算扩容倒退的必然趋势,可能帮忙云服务供应商降低成本。Presto自身反对这样的存算拆散架构,而数据能够从部署了Presto的服务器之外的近程存储节点获取。 尽管如此,存算拆散对查问提早提出了新的挑战,因为在网络饱和的状况下,通过网络扫描海量数据会受到IO的限度。此外,元数据拜访和操作门路也须要通过网络来获取数据的地位;几个元数据RPC来回就能轻易地把提早贬低到一秒以上,下图用橙线示意Hive连接器的IO相干操作门路,每条门路都可能成为查问性能的瓶颈。 RaptorX:搭建分层缓存解决方案过来,为了解决网络饱和的问题,Presto通过内嵌的Raptor连接器,将数据从远端存储加载到本地的SSD(固态硬盘),从而实现快速访问,然而,这种解决方案与计算/存储共享节点差异不大,有悖于存算拆散的理念。该解决方案的毛病很显著:要么因为worker节点的SSD空间已满而节约CPU,要么因为CPU受限而节约SSD容量。于是,Meta启动了RaptorX我的项目的开发。 RaptorX是为了将Presto查问性能晋升至多10倍而发展的一个外部我的项目,其中分层缓存是RaptorX我的项目胜利的要害。当存储节点与计算节点拆散时,缓存的作用尤为显著。开发RaptorX的目标不是为了推出一个新的连接器或产品,而是结构一套内嵌的解决方案,让现有的工作负载无需迁徙即可间接从中获益,该解决方案目前次要针对许多工作负载罕用的Hive连接器。 下图展现了缓存解决方案的整体架构,该缓存具备分层构造,本文会具体介绍: * Metastore版本化的缓存计划:咱们把表/分区信息缓存到coordinator中,鉴于元数据是可变的,就像Iceberg或Delta Lake那样,因而信息是被版本化的,咱们只与metastore同步版本信息,并仅在以后版本生效时去获取最新版本。* 文件列表缓存:将来自远端存储分区目录的文件列表缓存起来。* 片段后果缓存:在leaf worker的本地SSD上缓存局部计算结果。因为查问会一直变动,所以咱们须要使用裁剪技术来简化查问打算。* 文件句柄(file handle)和footer的缓存:在leaf worker内存中缓存关上的文件描述符(file descriptor)和stripe/文件footer信息,因为在读取文件时这些数据往往会被频繁拜访。* Alluxio数据缓存:在leaf worker的本地SSD上用对齐的1MB大小数据块来缓存文件段。该库(library)是通过Alluxio的缓存服务搭建的。* 亲和调度器:是指依据文件门路固定地向对应worker发送申请,从而使缓存命中率最大化的调度器(scheduler)。Metastore版本化的缓存Presto coordinator会缓存表的元数据(模式、分区列表和分区信息),以防止向Hive Metastore发动耗时很长的getPartitions调用,然而,Hive表的元数据是可变的,所以咱们须要进行版本治理并确定已缓存的元数据是否无效,因而,coordinator为每个缓存的键值对赋予了一个版本号。当收到读取申请时,coordinator会查问Hive Metastore,获取(未被缓存的)分区信息,或者与Hive Metastore核查确认曾经缓存的信息是否是最新的。尽管和Hive Metastore进行近程交互的操作不可避免,但与获取全副分区信息相比,版本匹配的老本绝对较低。 文件列表缓存Presto coordinator将文件列表缓存在内存中,从而防止对远端存储发动耗时很长的listFile调用。这只实用于关闭的目录, 而对于凋谢分区,为了确保数据的实时性,Presto不会缓存这些目录。凋谢分区的一个次要用例是反对近实时的数据导入和解决。在这种状况下,数据导入引擎(如微批数据micro batch)将一直向凋谢分区写入新的文件,以便Presto能够读取近实时的数据。其余诸如压缩、metastore更新或为近实时导入数据创立正本等详细信息不在本文的探讨范畴内。 片段后果缓存运行在leaf 阶段的Presto worker能够决定将局部计算结果缓存在本地SSD上,这么做是为了避免屡次查问时进行反复计算。最典型的用例是将执行打算的包含扫描、过滤、投影和/或聚合的片段后果缓存在leaf阶段 。 例如,假如一个用户发送了以下查问,其中ds是一个分区列: SELECT SUM(col) FROM T WHERE ds BETWEEN'2021-01-01' AND '2021-01-03' 对2021-01-01、2021-01-02和2021-01-03每个分区(更精确地说是相应的文件)计算的局部求和后果将被缓存在leaf worker上,造成一个“片段后果”,当初假如用户发送了另外一项查问: SELECT sum(col) FROM T WHERE ds BETWEEN '2021-01-01'AND '2021-01-05' 当初,Leaf worker便能够间接从缓存中获取2021-01-01、2021-01-02和2021-01-03的片段后果(局部求和后果),并且只须要对2021-01-04和2021-01-05两个分区计算局部求和即可。 因为片段后果是基于leaf查问片段的,用户能够增加或删除过滤器或投影,因而非常灵活。上述例子表明,只蕴含分区列的过滤器很容易解决。然而为防止因为频繁变动的非分区列过滤器造成的缓存生效,咱们引入了基于分区统计信息的裁剪策略,请看下述查问,其中time是一个非分区列: SELECT SUM(col) FROM TWHERE ds BETWEEN '2021-01-01'AND'2021-01-05'ANDtime > now() - INTERVAL'3' DAY请留神:now()函数的值始终在变,如果leaf worker依据now()的绝对值来缓存打算片段,简直不可能会命中缓存,然而,如果predicate(谓词条件) time > now() - INTERVAL '3' DAY是对于大多数分区来说为真(true)的“宽松”条件,咱们能够在调度时把该谓词从打算中删除。 ...

September 13, 2022 · 1 min · jiezi

关于meta:Meta-微软等组建元宇宙组织苹果缺席Win-81-即将停止支持Xmake-v268-发布-思否周刊

40s 新闻速递新 MacBook Pro 13 英寸正式开售:9999 元起微信公号新规:不可提供数字藏品二级交易相干服务RISC-V 发表新规格网络配置谬误导致 Cloudflare 大规模宕机Meta 微软等巨头组建元宇宙规范组织:苹果缺席微软发表停售 AI 情绪辨认技术,限度人脸识别谷歌称苹果和安卓手机被意大利特务软件入侵微软正告:Win8.1 零碎行将进行反对Xmake v2.6.8 公布7-Zip 22.00 公布FreeCAD 0.20 公布IntelliJ IDEA 2022.2 EAP 5 公布Qt 6.4 Beta 公布行业资讯新 MacBook Pro 13 英寸正式开售:9999 元起近日,首款搭载苹果自研 M2 芯片的 MacBook Pro 13 英寸曾经开启预约,售价 9999 元起,将于 6 月 24 日起正式发售。M2 芯片天然是最大的亮点,相比 M1 神经网络引擎性能晋升了 40%,内存带宽进步了 50%。比照 10 外围 x86 版 MacBook 系列,等同功耗下(15W)性能当先 90%。值得注意的是,尽管配置高了不少,但价格也随之上涨,9999 元起价的 MacBook Pro 只有 8 核 CPU+10 核 GPU+8GB+256GB 配置,顶配价格须要 18999 元。 微信公号新规:不可提供数字藏品二级交易相干服务近日,微信对《微信公众平台经营标准》进行了一次更新,新增了“虚构货币及数字藏品交易行为”条目,称帐号若波及虚构货币相干的发行、交易与融资等内容,例如提供交易入口、指引、发行渠道疏导等,“一经发现此类违规行为,微信公众平台将依据违规重大水平,对违规公众帐号予以责令限期整改及限度帐号局部性能直至永恒封号的解决。” RISC-V 发表新规格寰球凋谢硬件规范组织 RISC-V International 发表了 2022 年批准的 RISC-V 新规格:Efficient Trace for RISC-V (E-Trace)、RISC-V Supervisor Binary Interface (SBI)、RISC-V Unified Extensible Firmware Interface (UEFI) 以及 RISC-V Zmmul Multiply Only 扩大。E-Trace 应用分支跟踪,定义了一种高效的处理器跟踪办法;SBI 容许开发者一次编写在所有 RISC-V 实现中运行;UEFI 则是将现有的 UEFI 规范引入到 RISC-V 平台;Zmmul Multiply Only 是只须要乘法不要除法操作的低成本实现。RISC-V International 的会员包含了 Google 和英特尔等。RISC-V 是基于精简指令集(RISC)准则的一个开源指令集架构,它容许任何人设计、制作和销售 RISC-V 芯片和软件。 ...

June 26, 2022 · 2 min · jiezi

关于meta:Meta-透明内存卸载-功能亮相可为-Linux-服务器节省-2032-内存

刚刚,Meta(原 Facebook)工程师团队在博客倒退示了一种叫“通明内存卸载” (Transparent Memory Offloading,简称 TMO)的全新 Linux 内核性能,可为每台 Linux 服务器节俭 20% 至 32% 的内存。据悉,该性能已于 2021 年在 Facebook/Meta 服务器中投入使用,团队已胜利地将 TMO 的操作系统组件降级到 Linux 内核中。 通明内存卸载(TMO)是 Meta 针对异构数据中心环境推出的的解决方案,它引入了一种新的 Linux 内核机制,可实时测量由 CPU、内存 和 I/O 之间的资源短缺而导致的工作损失。在这些信息的领导下,TMO 在没有任何应用程序先验常识的状况下,主动调整要卸载到异构设施(如压缩内存或 SSD)的内存量。 也就是说,TMO 会依据设施的性能特色和应用程序,来对较慢内存拜访的敏感性来出做调整。除了应用程序容器外,TMO 还从提供基础架构级性能的 sidecar 容器中全面辨认卸载机会。 卸载机会 近年来,大量更便宜的非 DRAM 内存技术(如 NVMe SSD)已被胜利部署在数据中心或正在开发的数据中心。此外,新兴的非 DDR 内存总线技术【如 Compute Express Link(CXL)】也提供了相似内存的拜访语义,并靠近 DDR 性能。数据图显示的内存存储层次结构阐明了各种技术是如何互相重叠的。这些趋势的联合,为内存分层提供了新的机会,这在过来是不可能的。 应用内存分层,拜访频率较低的数据将迁徙到速度较慢的内存中。应用程序自身、用户空间库、内核或虚拟机监控程序能够驱动迁徙过程。Meta 的 TMO 性能工作专一于内核驱动的迁徙或替换,它能够通明地利用于许多应用程序,而无需批改应用程序。 只管概念简略,但内核驱动的对提早敏感数据核心应用程序的替换在超规模上仍具备挑战性。Meta 构建了 TMO,这是一个用于集装箱化环境的通明内存卸载解决方案。 解决方案:通明内存卸载TMO 的组成: 压力暂停信息(PSI),一个 Linux 内核组件,用于实时测量因为 CPU、内存和 I/O 之间的资源短缺而导致的工作损失。Meta 首次实现了可间接测量应用程序对内存访问速度减慢的敏感性,而不用求助于软弱的低级别指标,如页面晋升率。Senpai 是一个用户空间代理,它能够施加轻微的主动式内存压力,跨不同的工作负载和异构硬件无效地卸载内存,对应用程序性能的影响最小。TMO 以阈下内存压力级别执行内存卸载以替换,周转率与文件缓存成比例。这与在重大内存压力下作为紧急溢出进行替换的历史行为造成比照。 ...

June 21, 2022 · 1 min · jiezi

关于meta:苹果推出自助维修服务Meta-承认违法使用用户数据Redis-70-发布-思否周刊

40s 新闻速递iMac 可能会跳过 M2 间接在明年用上 M3 芯片苹果抵偿 1 亿美元给 App 开发者Google Play 商店已反对隐衷标签性能苹果在美国首先推出自助维修服务新浪微博发表全量凋谢展现用户 IP 属地性能Meta 工程师文件泄露:抵赖守法应用用户数据 往年一季度裸露的数据库数量翻新高,Redis 排第一GitLab 新 Logo 正式启用OceanBase 3.2.3 公布谷歌 Chrome 浏览器 v101 稳定版公布IntelliJ IDEA 2022.1 正式版公布微软 Teams macOS 版 Beta 公布Redis 7.0 公布行业资讯iMac 可能会跳过 M2 间接在明年用上 M3 芯片据彭博社 Mark Gurman 报道,当初苹果正在全力开发 M2 芯片和搭载 M2 芯片的 Mac,这些新品将会在将来几个月内公布。除此之外,Gurman 还说 M2 芯片不是苹果惟一在开发的芯片,他据说搭载 M3 芯片的新款 iMac 曾经在开发中,只管它最早都要到明年晚些时候才会推出。但他仍然认为,iMac Pro 并没有被砍掉,仍然会行将推出,只是不会很快。 外媒 9to5Mac 也通过独立消息来源证实,苹果正在开发一系列的 M2 芯片电脑,不过乏味的是,下一代 iMac 可能会在明年晚些推出,采纳 M3 芯片,而不是 M2 处理器。 苹果抵偿 1 亿美元给 App 开发者苹果揭示开发者能够向小型开发者支援基金提出索赔,这是苹果向开发者提供的一笔资金,作为 App Store 政策的 1 亿美元个体诉讼和解的一部分。苹果自 1 月以来始终在承受索赔提交,明天揭示开发者必须在 5 月 20 日之前提出索赔。开发者能够依据他们的 App Store 参与度要求取得 250 到 30000 美元不等的抵偿。 ...

April 29, 2022 · 2 min · jiezi

关于meta:超过-4-名顶尖-AI-元老离职-Meta-伦敦分部沦陷metaverse-元宇宙股被抛售

近日,有知情人士和 LinkedIn 剖析爆料称,这几个月以来,Meta(前身Facebook)AI 部门至多有 4 名顶尖科学家“元老”到职。这几位成员里,有在世界出名期刊上发表了数十篇学术论文并获得了多项冲破的科学家,Meta 正是凭借这些冲破才让 Facebook 和 Instagram 一直变强的。 超 4 名AI “元老”到职,Meta 伦敦分部“失陷”据 CNBC 报道,Meta 的竞争对手 DeepMind 实验室的前员工 —— 人工智能企业家 Karl Hermann 走漏称“Meta AI 到职的实在人数可能更靠近 6 个”,同时他还补充示意该公司伦敦分部的人工智能实验室的到职人数惊人 —— “Meta 在伦敦的办公室刚刚‘失陷’了,他们在六周的工夫里失去了大部分(顶尖)钻研人员”。 对此音讯,Meta 首席人工智能科学家 Yann LeCun 在在承受媒体采访时以邮件的形式回复称“人们的趣味在一直变动,并继续前进。”2013 年,Yann LeCun 在与创始人马克·扎克伯格(Mark Zuckerberg)共进晚餐后,独特创立了 Meta (过后还称为 Facebook)的人工智能实验室。 剑桥大学机器学习传授 Neil Lawrence 评估示意,他对这件事并不感到诧异 —— “马克·扎克伯格当初一败涂地……他们从一开始就没有在伦敦进行过适当的投资。” 中所周知,近年来随着”元宇宙“概念的大火,不少科技大厂都纷纷布局相干领畛域。去年 10 月,马克·扎克伯格(Mark Zuckerberg)也高调跟进,雄心勃勃的对外发表 Facebook 向 metaverse 迈进并重塑为“Meta”的重磅音讯。 然而,到了往年,Facebook 母公司 Meta 便忽然出奔了一些顶尖的人工智能科学家。 Meta 顶尖人才出奔起因:元宇宙股被抛售?据报道,近期到职的人员包含钻研科学家 Ahmad Beirami(往年1月来到 Meta 后退出谷歌)、曾领导 Meta 在人工智能分支“强化学习”相干工作的钻研科学家 Edward Grefenstette(往年 2 月份刚刚来到该公司)、Meta 人工智能的钻研工程经理 Heinrich Kuttler(最近几周来到,现已退出由 DeepMind 联结创始人 Mustafa Suleyman 和 LinkedIn 亿万富翁 Reid Hoffman 开办的 Influction 人工智能公司),以及去年 12 月到职的 Meta 的 5 年元老钻研科学家 Douwe Kiela(现为人工智能初创公司 Hugging Face 的钻研负责人)。 ...

April 4, 2022 · 1 min · jiezi

关于meta:MetaFacebook-基于Alluxio-Shadow-Cache优化Presto架构决策

Facebook Presto是一个以SQL语言作为接口的分布式实时查问引擎,能够对PB级的数据进行疾速的交互式查问。它反对规范的ANSI SQL.蕴含查问、聚合、JOIN以及窗口函数等。 Alluxio将其在数据层的翻新作为Presto和各种剖析应用程序和用例的要害反对技术。它创立了一个虚构数据层,能够聚合来自任何文件或对象存储的数据,提供跨存储系统的对立命名空间,并容许应用程序持续应用原有的行业标准接口来拜访数据,同时可能为Presto提供内存级别的速度和响应工夫。 为了进步申请的响应速度,Presto正在摸索缓存容量与缓存命中率对于性能的影响。Presto须要通过Alluxio晓得某些对于缓存的信息,从而判断当一个集群被缓存大小所限度时,扩充缓存容量是否可能帮忙集群进步缓存命中率以及申请的响应速度。同时这些信息也可能对摸索缓存算法潜在的优化策略提供肯定的帮忙。在此基础上,为了更好的负载平衡和效率,Presto想要通过这些信息优化缓存扩容的路由算法。于是如何更好的对Alluxio缓存数据进行追踪治理,就成了presto优化决策的要害。 针对下面Presto提出的需要,咱们提出两个关键问题: 运行的应用程序须要多大的缓存? 缓存的命中率晋升的极限在哪里?咱们提出Shadow cache:用于追踪工作集大小和缓存命中率的轻量级Alluxio组件。首先为解决第一个问题,Shadow cache会告知管理者在过来24小时之内缓存一共承受到了多少互不反复的bytes,依此能够预计出将来缓存的需求量。此外为解决另一个问题,Shadow cache将会告知管理者在缓存可能将过来24h的所有申请全副保留的状况下申请命中缓存的数量,也就是说,未命中的都是从未呈现过的数据,而这就意味着失去了缓存最大命中率。 这个轻量级的Alluxio组件Shadow cache可能提供相当于有限缓存空间下,缓存工作集大小以及缓存命中率的趋势。因而,咱们定义以下要害指标,心愿这些指标可能为咱们察看集群缓存状态提供帮忙: C1: 在一段时间内的真正的缓存占用空间大小 C2:Shadow cache在一个工夫窗口中的工作集 H1:实在缓存命中率 H2:Shadow cache的缓存命中率想要为Alluxio的缓存提供上述指标是十分困难的,在实际尝试的过程中咱们也遇到了方方面面的问题,咱们将Shadow cache面临的挑战归类为以下三个方面: 低开销:作为一个跟踪缓存工作集大小的轻量级组件,留给Shadow cache的内存很小,利用无限的内存去追踪“有限”的工作集是相当艰难的。另外,因为Shadow cache是在每次利用查问缓存时对本次查问的数据进行解决,Shadow cache也必须要做到低CPU开销,否则将会导致用户的申请被长时间梗塞。 高精准:Shadow cache也必须要有精度上的保障,在Presto中,Shadow cache被用于评估集群的缓存情况,如果预计的极限缓存命中率过小,可能会使Presto谬误的判断此作业是缓存不敌对的;相同的,如果预计的极限缓存命中率过大,可能导致Presto认为此时集群扩充缓存可能极大地晋升整体性能。 实时性:Presto以及其余大多数利用在现在都只关怀可能反映以后或将来趋势的最新项。因而,实时地将过期的项抛弃对于Shadow cache也是相当重要的。否则,很有可能对决策带来乐音烦扰。【滑动窗口】便是记录最新项的驰名技术之一,然而为滑动窗口模型设计数据结构也不是一件简略的事件。每当窗口滑动时,都须要咱们实时地删去那些刚刚被移出窗口的项。如何找到须要被删的项以及尽量快的删去它成为了一个重要的问题。 既然提到了高精准与低开销两个需要,那么咱们首先就想到了在各类分布式数据库中大放异彩的布隆过滤器,基于布隆过滤器,Shadow cache便实现了对工作集大小和极限命中率的预计。上面咱们来对布隆过滤器做一个简略的介绍:布隆过滤器是一个以bit为单位的初始化全0的数组,它将每个项映射为几个bits,极大的节俭了空间上的开销,并可能以极高的效率进行查问。布隆过滤器可能判断项是否存在,若布隆过滤器返回该项不存在,则项肯定不存在。反之,则该项不肯定存在。布隆过滤器领有k个hash函数,在插入一个项时,会对此项别离进行k次hash运算,并失去k个地位,将在过滤器中对应地位的bit将被置为1。而须要查问时,则依然对项进行k次hash运算,若失去的k个地位上所有bit都为1,那么判断此项存在,否则判断此项不存在。具体过程如上图所示。 既然布隆过滤器可能同时满足开销小和精度高的两种需要,那么咱们可能间接将布隆过滤器利用于Shadow cache中吗? 首先咱们遇到的问题就是布隆过滤器不反对删除,咱们不关怀比拟长远的工作集负载状况,而只关怀用户的应用程序在过来的一段时间中的工作集大小,这就要求Shadow cache必须做到可能将过期的项删去,为了做到这一点,Shadow Cache将多个过滤器连贯到一起,组成了布隆过滤器链。上面咱们来看看如何通过布隆过滤器链,实时地对工作集负载大小进行更新。查问:如上图所示,Shadow cache是由多个布隆过滤器所组成的链,如果咱们须要跟踪的是用户过来24h的工作集大小,那么能够将24h分为4个时间段,对应每个时间段Shadow cache有一个布隆过滤器,每个布隆过滤器都跟踪一个时间段。对于一个项的查问,Shadow cache会将所有布隆过滤器相“或“失去新的布隆过滤器,再对新的布隆过滤器进行此项的查问,如下图所示:更新:而为了保证数据的实时性,当工夫窗口进行滑动时,咱们须要Shadow cache抛弃曾经过期的数据。也就是说须要随着工夫t不断更新布隆过滤器中的数值,将布隆过滤器中曾经处于工夫窗口外的项删掉。如下图所示,因为咱们是将多个布隆过滤器组合在了一起,因而,很容易判断过期的项的地位,它们就处于最末端的布隆过滤器中。于是每当一个新的时间段到来,咱们就从链中删去最老的过滤器,并新增一个全空的过滤器来记录最新数据。工作集大小:布隆过滤器将一个项映射为多个 bits,若将工作集大小直接判断为bit为1的数量将会带来不可承受的误差,因为某一bit可能代表多个项,而某一项也被扩散为了多个bits,于是在这里咱们应用了Swamidass & Baldi (2007) 所推导出的以下公式对工作集大小进行估算,并获得了良好的成果:其中是被插入进过滤器中所有元素的估计值,m是过滤器的长度(大小),k是hash函数的个数,X是所有被置为1的地位的个数。 极限命中率:在提供了工作集大小这一指标后,Shadow cache还须要提供极限命中率这一指标。因为布隆过滤器可能以极小的内存使用量跟踪巨量的数据,咱们能够将布隆过滤器视作一个空间大小为有限的缓存,因而,“用户申请“命中布隆过滤器的数量就相当于命中一个有限大小的缓存的数量,咱们将此数量记为hit,而“用户申请”的总数量记为queryNum,于是极限命中率就等于hit/queryNum。在实现布隆过滤器链之后,咱们就能够轻松得悉之前定义的指标H1、H2、C1、C2,之后Presto能够通过比拟它们之间的大小关系来判断集群的缓存状态,如下图所示:当H2比拟低时,表明就算领有有限的缓存空间,也不能使得缓存命中率达到现实的数值,因而阐明该集群中运行的利用是缓存不敌对的。当H2高H1低且C2>C1时,阐明集群的缓存空间调配有余,如果扩充缓存容量,命中率可能进一步提高;而当H2高H1高且C2>C1时,证实集群状态良好,无需对缓存进行缩放。Shadow cache的布隆过滤器实现是基于Guava库的,并且反对依据用户自定义的空间开销,窗口大小等参数抉择过滤器的具体配置。目前Shadow cache反对统计的工作集单位包含pages和bytes,别离代表工作集蕴含多少页以及工作集蕴含多少具体bytes。而对于命中率的计算,Shadow cache 能够以byte为单位记为一次命中,同样的也能够用一个对象为单位来记为一次命中。 配置项如下图示:咱们对Shadow cache进行了试验评估,发现仅需125MB的空间,Shadow cache就能追踪27TB的工作集,并且错误率仅有3%。并且错误率还能够通过HyperLogLog算法进一步缩小,但如果应用HyperLogLog就将不反对极限命中率的预计。 在利用Shadow cache得悉集群的具体状态后,如果集群状态不良,Presto须要一些伎俩来及时的调整集群,以此进步集群的响应速度。咱们接下来先介绍目前presto的路由算法,而后给出几种在退出Shadow cache之后可选的路由优化计划。Presto将不同的表存储在不同的集群中,以表名在各个集群之间分享缓存。因而,当一个对于某表申请到来时,该申请总会被发往雷同的集群。如果不这样做的话集群的缓存就容易被各种芜杂不一的表充斥,不能施展缓存的成果。上面咱们通过一张图来阐明路由逻辑:如上图所示,table 1到table4有着不同的表名,因而被调配到不同的集群中 。当申请table1中的数据时,路由逻辑将会把此申请发往cluster1,而申请table3中的数据时,路由逻辑将把申请发往cluster3。判断一个集群是否失常的一个简略计划就是看一个指向某个集群的申请的响应工夫,若该集群迟迟没有回应或回应的工夫过长,咱们就认为该集群呈现了问题。在有了Shadow cache之后,就像上文所提到的,联合H1、H2、C1、C2,咱们能够疾速判断一个集群是否是因为缓存有压力而呈现的性能降落。 对于这样一个体现不佳的集群,Presto提出以下三种路由优化计划: 计划一:当次要集群正忙时,咱们有一个指定的也领有该缓存的第二集群会被启用来为申请进行服务。但这种办法会在每个集群中占用额定的缓存空间。 计划二:两个集群都被视为主集群对申请进行服务,并且在这两个集群中进行负载平衡,然而这种计划将会使得缓存磁盘空间占用倍增。 计划三:基于申请的模式来替换各集群中的表,进而让CPU占用的散布更加平均。同样的,这种计划也有问题:会使得缓存散布不平均从而须要额定的缓存空间。对用户缓存中的工作集大小进行追踪估算是一项重要而又富裕挑战性的工作,为此咱们基于布隆过滤器设计了一个轻量化的Alluxio组件Shadow cache。因为咱们只关怀用户工作集大小的最新状况,因而须要应用工夫窗口模型来淘汰过期项,为此Shaodow cache将工夫窗口拆分为4段,每段用不同的布隆过滤器进行跟踪,每次淘汰时只需删除最早创立的布隆过滤器,再创立一个新的布隆过滤器追踪最新数据。最初,须要提供工作集大小时,咱们用到了Swamidass & Baldi (2007) 提出的基数预计公式。 ...

February 17, 2022 · 1 min · jiezi

关于meta:TGDC-MetaHuman原理及流程浅析

大家好,我是EpicGames中国的技术美术孙丹璐,明天为大家带来的分享是Metahuman原理及流程浅析。 当初数字人是个十分炽热的题材,不论是游戏、影视、直播、工业、广告等畛域都有着大量需要。然而传统数字人的制作在设施,人力和工夫老本上都十分昂扬的,每个流程,每一个环节比方扫描角色、绑定,动捕和面捕进行驱动,也都须要肯定的技术门槛能力达到的。所以在市面上的大多数案例中,比方大家看到的AAA游戏中,基于老本,个别只有无限的配角会采纳残缺的高精度数字人成果,其余角色的精度都绝对低很多。 基于此,咱们提供了一套计划叫做MetaHuman Creator,疾速和容易地创立独特高保真的数字人类的工具,你能够间接操纵面部特色,调整肤色,并且从预设的身材类型、发型、服饰等范畴中抉择,在metahuman中甚至能够编辑角色的牙齿,在角色制作实现后,你的角色会蕴含残缺的绑定并能够间接在空幻引擎或者maya中制作动画。 为了达到零门槛创立数字人,可见即所得的指标,咱们提供了基于Epic生态的三个套件进行协同工作,通过MHC疾速在线制作数字人,利用Quixel Bridge导出数字人,在空幻引擎中利用到游戏或者影视当中。 https://v.qq.com/x/page/s3312... 我想先为大家展现下通过MHC进行捏人,MHC依靠于网络,通过Pixel Streaming在网页端交互应用,在这个视频演示中,我捏出一个全新的数字角色理论只用了4分钟,大家能够看到操作也很直观易懂,上手门槛非常低。在捏脸的局部,面部混合提供三种模式 。 第一种是混合模式,最粗粒度的捏脸,通过左上方的混合圈,增加3~6个角色区进行插值,你每管制一个特色点进行捏脸,就是采样这几个预设角色的特色点去做插值。 第二种模式是挪动模式,依照五官划分了特色点,在这个模式下能够疾速的批改五官。 第三种模式是雕刻工具,是Creator提供的最细粒度的工具,能够针对最小特色点,比方鼻尖,来区进行细节调整,Creator中大家须要留神到这里的雕刻和Zbrush中的雕刻是存在一些不同,MHC中的雕刻, 是通过你冀望雕刻的状态,在基因库中索引一组面部特色点再进行交融。另外Creator中常见的一个误区是,挪动和雕刻工具,实际上与你左上角预设好的几个角色是无关的。它挪动和雕刻都是在整个基因库中进行索引,并不依赖于左上角预设好的角色。 另外,其实挪动工具和雕刻工具,是能够一一对应起来的,比方挪动模式的眉弓处控件,对应的是雕刻工具下 ,眉心、眉头、眉峰、眉尾、这四个特色点。 另外在Creator中也能够调整肤色和纹理细节,皮肤的纹理选项岂但能够减少脸部外表的细节,也会对面部的状态产生影响,比方皱纹对于面部状态其实是有一个形变的。 Creator中也提供了绝对灵便的妆容设置,比方粉底,眼影和眼线,各部位的腮红、口红,可能进一步缩小用户对于数字角色进行二次批改的需要和开销。 在身材的塑造上,MHC提供了预设好的18种体型进行抉择,头部目前并不会随着身材的高度或体型抉择主动的产生扭转。所以其实有的时候你抉择体型之后,可能看起来身材和头的比例有些奇怪,所以咱们提供了头部缩放性能。 头部的缩放并不是齐全等比缩放,而是会更符合人体特色,你能够看到,你当初缩放头部的时候,你的脖子并不会随之有限的增粗,这样缩放也能较好的解决头颈和身材的连接。 咱们来看下MHC背地的技术,首先咱们会通过4D扫描大量的事实人类面部,通过人工和ML解决数据,提取出每个角色的特色点信息,存入一个叫做DNA的数据格式中,而DNA用于形容角色的外观、骨骼绑定,最初咱们把这些信息寄存到GenePool中,GenePool是咱们的一个数据库,用户每一下捏脸操作,实际上就是在GenePool的数据库中进行索引,混合,最初基于你捏好的数字角色,也会生成一份举世无双的DNA数据。 在体型方面,采纳了传统流程制作的体型。次要是目前咱们还没有较为欠缺的身材数据库,所以没有方法和头部一样能够交融不同体型的特色点来捏体型,另外当初咱们也不提供利用缩放进行任意的体型调整的设置,次要起因是整体成果不能达标,比如说部分调整过体型之后,你的身材和脖子的接缝处并不是一个很好解决,另外服饰也是很大的问题,部分放过的身材很难做到布料贴合。 在纹理方面,皮肤的纹理是通过扫描数据中的纹理进行合成来生成制作,以确保达到更实在的成果,扫描的纹理拆散成低、中、高频率的细节纹理,用于在Creator中自定义的混合,而其余中央应用的纹理,则应用更传统的管道去进行制作。 另外MHC是一个基于云端的APP,咱们把MHC放在了云端。次要是因为以上数据量,尤其是面部GenePool和纹理数据的数据量十分十分微小的,而且将来会不停裁减,单就数据量和运算压力恐怕不太适宜放在个人电脑上进行运算,所以咱们采纳了基于云端的计划,同时云端还有个益处,更新迭代很快,很多问题和改善能够间接后盾实现,不须要每一位用户都进行频繁的更新。为了把云端的MHC输送到浏览器,咱们采纳了Pixel streaming,Pixel streaming是一个基于空幻引擎的流送技术,在云端服务器上运行空幻引擎应用程序,通过WebRTC将渲染的帧和音频流送到浏览器和挪动设施,不晓得大家有没有意识到,应用了pixel streaming意味着,后盾跑的也是空幻引擎,在云端的空幻引擎中制作数字人,导出到本地的空幻引擎里进行应用,所有参数,模型,毛发,布料,纹理,材质,LOD参数都能够一一匹配,这是真正的所见即所得。 从MHC捏好之后,就能够通过Bridge下载你制作的数字角色了,关上Bridge能够看到Metahuman的分栏,外面会实时更新你捏的MH,在Bridge须要配置你心愿下载的纹理分辨率。在点击download的时候,会有一个主动步骤是生成,生成是依据捏人时候设置的数据,比方皮肤,以及download设置的参数,基于这些数据生成纹理和LOD,因为后盾跑的是空幻引擎,所以模型以及骨骼的LOD,都是基于规定,应用引擎内LOD减面和骨骼LOD剔除达成的,而对于毛发的LOD,为了保障成果,是手动生成的插片和模型LOD,MetaHuman的资产生成可能须要一点工夫来解决,这次要取决于所抉择的资产是什么,它们的纹理分辨率以及你当初的网速,还有就是会思考到你当初的Bridge队列中有多少资产须要生成,均匀来说,如果你下载的是一个有1K纹理的MetaHuman,须要大概20分钟来生成和下载。 在下载的时候抉择的纹理分辨率,并不是一个相对分辨率,而是一个指引的分辨率,也就是说如果抉择下载8K的,实际上只有奉献最大的normal和cavity纹理是8K的,而皮肤albedo是2K的. 这其实和皮肤自身的个性无关,个别SSS皮肤散射的成果靠近于低频的滤波,成果有点相似于blur之后的纹理,所以albedo的高频细节自身就会被SSS的shading个性抹掉,咱们对albedo的奉献做了成果和效率上的评估,发现8K 4K的albedo绝对于2K的成果改善简直是肉眼不可辨别的,所以在这里应用了2K的分辨率。而roughness纹理,是应用空幻中一个自带流程将法线转换为粗糙度,通过Bridge导出能够导出到maya和空幻引擎中,接下来咱们来剖析在空幻引擎中的MH。 导入引擎后,会有一个专门的Metahuman文件夹,对于所有Metahuman生成的数字角色来说,无论是男性还是女性,有些资产内容都是共通的,咱们把这些存储在MetaHuman/Common文件夹中,而每个人特有的资产则存储在相应名字的文件夹下。 位于Metahuman文件夹下,Metahuman的身材各部件会以一个蓝图组合到一起,蕴含躯干,面部,面部各种毛发,出于性能和成果的均衡,并且为了适配不同的平台,不论躯干还是毛发,都有本人的LOD信息。 比方头部咱们设置了8层LOD,咱们为每层LOD设置了肯定规定,每层LOD都有独立的,顶点量、blendshape,、关节数、动画纹理、蒙皮影响等区别,blendshape因为性能开销比拟高,所以从LOD1开始就没有在应用,而纹理动画则是因为须要读入的纹理十分多,所以LOD2开始没有在用,当然从屏幕上看这些头部,可能LOD3或者LOD4开始 ,之后的成果会显得有点毛糙,然而LOD的抉择肯定是要综合思考到屏占比来去掂量成果的。 比方我在对应LOD的屏占比下来截了这三张图,别离是拉到最近时候的LOD0,中距离看到全身时候会切换到的LOD3,以及远距离切换到的LOD7。 我在雷同间隔下,把模型强制按LOD0渲染作为比照,也就是图上当初新增的LOD3和LOD7旁边的对应的头部和全身,能够看到两者的区别并不是特地大,也就是在这样的间隔下,在这样的屏占比下,LOD切换对于画面的成果并不会影响太大,LOD其实不光是对于性能有晋升,对于画面成果也是会有肯定改善的,比方大家常见的画面失真摩尔纹,引入LOD就能够改善这种状况。 这是身材模型的LOD数据,身材只有4层LOD,以画面上的裤子为例LOD0是有一万五千面左右,而LOD4 大略是一千五百面左右。 对于骨骼而言,骨骼模型的LOD能够大量缩小skinning的开销,然而他还须要骨骼的LOD,骨骼的LOD能够很大缩小动画Evaluation中采样、插值、混合的开销。那么身材骨骼LOD0是150根骨骼,LOD4是55根骨骼。 大家其实留神到,每个不同的局部可能LOD层数不统一,比如说方才的头部是8层LOD,而身材的LOD只有4层,同时要思考到,因为身材和头部的屏占比不统一,所以计算出来的LOD也会不统一。那就会导致成果上呈现一些不匹配的问题,比方身材和头部的接缝处没有方法齐全匹配,或者说,咱们思考毛发的话,屏占比很小的眉毛groom可能永远没有方法渲染到LOD0,而只有很近处才须要的汗毛groom,却因为突围盒是整个面部,所以会在中距离处也会渲染到LOD0,这是一个性能上的节约。那么为了解决这个状况,引擎退出了LODSync component,通过配置LODSync component在这外面配置不同部位的奉献和计算形式,能够让不同部位也能够做到共享一套LOD。 因为工夫关系,可能没有方法剖析引擎中metahuman每一个细节,上面我会以绝对动态和动静资产为辨别,联合可伸缩性,次要介绍上面几个次要的局部。 首先是毛发,毛发包含:头发,眉毛,面部的绒毛,睫毛以及胡子。 ...

December 14, 2021 · 1 min · jiezi

关于meta:拥抱未来Meta-奔向元宇宙

《文化》(Civilization)是扎克伯格最喜爱的游戏之一,当初成为了他和女儿的共同爱好,简直每天都要在一起玩上很久。作为一款策略游戏,这款游戏的指标是建设起一个「可禁受工夫考验的帝国」,这可能也是扎克伯格对新「Meta」和将来社会赋予的期待。 北京工夫 2021 年 10 月 29 日凌晨 1 点,Facebook Connect 2021 线上大会正式开启。马克·扎克伯格出镜并发表了长达 1 个半小时的演讲。 与外界猜测的一样,扎克伯格本次演讲的重点都放在了元宇宙。并在演讲的最初环节,发表Facebook 公司将更名为 “Meta”,取自「元宇宙」英文 Metaverse 的前 4 个字母。 一、更名 Meta,Facebook 奔向「元宇宙」之所以更名,扎克伯格在发布会中给出了起因。“Facebook 是世界历史上被应用最多的产品之一,它是一个标志性的社交媒体品牌,但它越来越不能涵盖咱们的所有。随着工夫的推移,我心愿咱们的公司会被视为元宇宙公司。” 早在往年 5 月,Facebook 就曾表态称要在 5 年内转型成为一家元宇宙公司,并在 Q3 的财报会议中示意,公司会在 2021 年末之前开始继续在自家的 AR、VR 部门 Facebook Reality Labs 投资 100 亿美元,后续更将更多的资金投入到「元宇宙」的建设。 更名、砸钱,让扎克伯格全力以赴的「元宇宙」到底是什么? 元宇宙的概念,最先呈现在 1992 年出版的科幻小说《雪崩》里,在该书中形容了一个虚构的网络世界 —— 元界。所有事实世界的人在元界都有一个网络分身,在超过事实的另一个平行世界中生存。 包含《黑客帝国》以及前不久上映的《失控玩家》中也都曾体现过元宇宙的场景,概括下就是:人类以数字化的状态在虚拟世界中生存,取得超过事实宇宙的沉迷式体验。 这些科幻作品中所描述的元宇宙场景,当初看起来仍有些不切实际,但元宇宙的雏形,其实曾经到来。 本次发布会中,扎克伯格便从生存、学习、娱乐和办公等诸多场景,展现了 Meta 在元宇宙畛域的摸索,并公开了局部 Meta 旗下 FRL 实验室的钻研胜利。近期还成立了新团队专门研发「元宇宙」产品,心愿整合旗下 Oculus VR 头盔硬件、AR 眼镜和腕带等可穿戴技术,摸索「元宇宙」的更多可能性。 二、硬件软件联结,摸索「元宇宙」更多可能在发布会中,扎克伯格展现了本人的虚拟化身,衣着牛仔裤和彩色长袖衬衫。他示意将来人们“可能”领有多个用于工作、家庭和游戏的化身,这所有都建设在对于「元宇宙」的硬件与软件性能反对上。 本次发布会中,扎克伯格介绍了一款高端 XR 头显 Project Cambria。Project Cambria 搭载了相较传统头显更多的传感器,可实现眼动追踪与面部捕获性能,从而在虚拟世界中活泼出现用户的面部表情,生成更加真切的虚拟化身。 ...

November 16, 2021 · 1 min · jiezi

关于meta:出海应用自来水-如何用Meta开放平台产品创造社交币

出海的话题陈词滥调,但大家议论的内容正在产生一些很显著的变动 —— 从市场、赛道、渠道的抉择转为如何无效地推广品牌、进步市场渗透率。 在剖析过海内环境后,很多出海厂商意识到社交平台的情感营销正成为一种颇具功效的营销伎俩。如果能为用户打造“社交币”,便可进一步驱动用户的分享欲,实现用户的自主流传,从用户维度解决出海 App 的推广难题。 一、出海赛道降级,海内环境大不同之所以呈现这个趋势,在于海内市场环境的变动。 尽管海内市场相比国内的白热化竞争,仍有一些红利存在,但其实从 10 多年前开始,就已有少量中国互联网企业开始海内市场拓展,近年来,更已笼罩简直所有的利用分类,无论是出海企业的利用/内容规模,还是市场覆盖度,中国互联网企业出海仿佛都已进入“深水区”。 所谓的“深水区”,对应的便不再是横蛮成长,而是“深耕细作”。对大多数出海开发者来说,设计开发一个 APP 进去并不难,甚至对于政治状态、法律规定、社会文化、语言环境、产业根底,都曾经有十分规范的一套“实践白皮书”或者工具库,来帮忙大家跨过这些门槛。现阶段大家探讨最多的话题,同时也是最难解决的问题,曾经变成摸索用户习惯,思考如何设计产品的用户经营思路,如何进行推广。 二、绑定社交情感营销,社交平台具备微小的情感传播价值做用户经营之前,首要便是找到用户以及用户行为的聚集地。而最大的流量池,无疑就是各类社交平台,并且现阶段的挪动社交平台早已超过了单纯的社交意义,它们承载着用户们的眼球、情绪与分享欲,并且社交网站上流传的价值传递效率比直接触达陌生人更高。 国内大家比拟相熟的便是两微一抖(微信、微博和抖音),国外则是 Facebook、Instagram 和 Tiktok。不同的平台有着不同的用户群,也有着不同的定位和经营思路。比方 Facebook 更多的是熟人社交以及新闻资讯的扩散流传;Instagram 次要是生存形式的分享;TikTok 则更多是情绪的开释,以及借助乏味的滤镜来展示自我。 理解社交平台的属性后,咱们能力通过剖析用户来到平台的原始情感,从而通过经营机制与内容进行情感的疏导,进而达到流传与转化的目标。 国内相干的经营机制比拟成熟,将社交平台接入到本身 App 的流传链条当中。这样做能够借助一个更大的流量池为本身产品打造一个现成的交换社区,更能间接的推广产品,吸引更多用户。比方你的敌人通过社交媒体分享他正在玩的一个游戏、夸耀他取得的徽章或者最高问题,那么你就很有可能被吸引去试玩那个游戏。 目前出海企业在海内社交平台上的经营模式大部分是简略粗犷的付费投放,比方基于 Meta 旗下 Facebook 的图片广告、视频广告、快拍广告、轮播广告、幻灯片广告、精品栏广告等等。这些广告都能够帮忙 App 开发者实现特定的业务指标,但并不是所有开发团队都具备大量的估算去付费,并且单纯的投放并不能施展社交平台全副的资源能力,仍须要将本身的产品用户生态和社交平台的用户生态买通。 出海APP开发者能够思考通过社交平台生态为用户提供更大的价值,激励他们分享信息,实现更高的参与度,从而将社交网络与产品绑定的更加深。其实这也意味着,少量中国互联网企业能够踏在这些媒体平台、合作者的肩膀上,以更便捷的形式、更低的老本,更多的形式,更密集的规模,个体走向海内市场。 三、“分享到快拍”,帮忙出海 App 为用户打造“社交币”正如前文所说,相比设计开发一个 App,如何将本身的 App 接入到社交平台,并且帮忙用户更便捷的分享、为用户提供更优质的分享内容模板作为“社交币”才是最难的一环。 很多平台都会提供便捷的接口帮忙开发者疏导本人的用户分享内容到社交平台,实现社交扩散。其中,Meta 也提供了 sharing to stories 服务,App 接入该服务后,用户便可借助“分享到快拍”性能以 Facebook快拍或者 Instagram 快拍的模式分享内容,并可通过跳转链接间接跳转至产品利用的下载、注册等页面,即可为用户提供快捷优质的社交分享体验,同时亦可为本身产品提供流传转化的成果。 出海服务商 APUS 就曾与 Facebook 联袂推出“Travel with Cut Cut”用户流动,用户只有在 Cut Cut 应用程序内抉择青睐的旅行背景图,通过程序自带的智能抠图性能实现个性化作品,并一键分享到 Facebook 的“分享到快拍”模块就有机会获取丰富处分。 这项流动的背地,便是“分享到快拍”性能的首次内测。该性能一方面买通了用户一键分享到 Facebook 的操作门路,另一方面,分享出的作品图片中也内嵌了 Cut Cut 的产品标识,可间接跳转至产品的下载页,从而造成从流传到引流的链路闭环。 ...

November 10, 2021 · 1 min · jiezi

关于meta:一键登录快捷分享-Meta-赋能企业增长新动力

“It’s All About Developers(所有以开发者为核心)”。 这句话是往年 6 月份举办的 F8 大会的主题。过后还未更名为 Meta 的 Facebook 示意心愿让 F8 回归根源,成为一场真正的开发者大会,帮忙开发者找到与客户建立联系的创新性解决方案。 大会中提到 Meta 旗下的 Facebook 将提供更凋谢的 API、全新开发者平台、AR 创作者工具、技术工具,并推出了一系列围绕着 Messenger 为核心的开发者更新,其中有两个重磅性能 ——  “登录 Messenger 连贯”和“分享到快拍”,开发者借助这两项性能可实现用户的一键登录、快捷分享,而这将为中我国的出海厂商在拉新引流、营销推广方面带来弱小的助力。 Newchic 和 Lomotif 是两家借助此性能获得业务大幅增长的出海企业。让咱们通过拆解这两个案例来理解 Meta 如何助力出海开发者、赋能企业增长新动力。 案例一:助力企业,推动构建高效购物渠道 Newchic 是一家 B2C 线上时尚公司,总部位于中国香港,服务的客户遍布 200 多个国家/地区。这家时尚零售商成立于 2014 年,在 2015 年借助 Facebook 广告开始扩大其跨境业务,是较早采纳 Messenger 的公司。 Newchic 给本身设定的市场推广指标十分明确,心愿与用户产生更亲密的交换,并为用户提供更疾速的结账通路。因而 Newchic 早在 2018 年便尝试应用 Messenger 作为客户服务渠道,集成了 Facebook 登录,并与 Bothub 单干,以构建并集成自动化的 Messenger 体验。 “登录 Messenger 连贯”是 Meta 的一款新服务,能让用户在应用 Facebook 登录创立帐户时抉择接管音讯。该性能上线后 Newchic 便第一工夫接入,并将 Facebook 广告和 Messenger 作为其多渠道实时销售打算的一部分,以便客户在参加 Facebook Live 直播的限时抢购时,能通过私密回复疾速轻松地购买产品。 ...

November 3, 2021 · 1 min · jiezi

Meta-Thinking

All the things that I can perceive, belong to one of below two types: Vision of existence what existswhy something existshow it existsVision of choice value system: what is neededability set: what changes of nature can be done by humangoal set: what to changeThe universe is a whole existence with many aspects and layers. Human consciousness is limited, causing universe to appear as many fragments, but that's not how it is. ...

April 24, 2019 · 1 min · jiezi

HTML、CSS、meta常用代码

HTML1、关闭首个字母大写(HTML)<input type=“text” autocapitalize=“off”/>2、伪类:active失效body class="" onmousemove="" ontouchstart=““meta1、设置页面的编码(HTML)<meta charset=“UTF-8”>2、禁止手机放大或缩小(HTML)<meta name=“viewport” content=“width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”/>“2、删除默认的苹果工具栏和菜单栏,默认全屏(HTML)<meta name=“apple-mobile-web-app-capable” content=“yes”/>3、启动或禁用自动识别页面中的电话号码,邮箱、地址(HTML)<meta name=“format-detection” content=“telephone=no, email=no,date=no,address=no”/>4、文档兼容模式 – IE以最高级模式渲染文档(HTML)<meta http-equiv=“X-UA-Compatible” content=“IE=Edge, chrome=1”>5、顶部状态栏背景色(HTML)<meta name=“apple-mobile-web-app-status-bar-style” content=“black-translucent”/>6、页面的关键字、描述–搜索引擎使用(HTML)<meta name=“description” content=””/><meta name=“keywords” content=”"/>7、winphone系统a、input标签被点击时产生的半透明灰色背景怎么去掉<meta name=“msapplication-tap-highlight” content=“no”>CSS1、取消 input search 的close(CSS)input[type=search]::-webkit-search-cancel-button{ -webkit-appearance: none; //此处只是去掉默认的小×}::-webkit-search-cancel-button { display:none; }input[type=“search”]{-webkit-appearance:none;} 7、重写占位符样式input[type=search]::-webkit-input-placeholder{color: blue;}2、禁止选中复制文本(CSS)-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;[contenteditable=true], input, textarea { -webkit-touch-callout: auto !important; -webkit-user-select: auto !important; -khtml-user-select: auto !important; -moz-user-select: auto !important; -ms-user-select: auto !important; user-select: auto !important}3、input和button 消除触摸阴影(CSS)-webkit-tap-highlight-color: transparent;4、取消button的默认样式-webkit-tap-highlight-color: transparent;-webkit-appearance: none;-moz-appearance: none;appearance: none;border: 0;outline: 0;5、改变webkit表单输入框placeholder的颜色值input::-webkit-input-placeholder{color:#AAAAAA;}input:focus::-webkit-input-placeholder{color:#EEEEEE;}6、媒体查询(CSS)(@media screen and (max-width: 330px) and (min-width: 311px) {}常用连接用border做三角形CSS在线API–1CSS在线API–2meta标签扩展 ...

April 1, 2019 · 1 min · jiezi

meta有什么作用

在html的head标签中,会使用很多的meta标签,例下:<head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <meta http-equiv=“X-UA-Compatible” content=“ie=edge”> <meta name=“keywords” content=“编程, 前端, 极客, Call, Apply, Bind”> <meta name=“theme” content=“xh-2”> <meta http-equiv=“Cache-Control” content=“no-cache, no-store, must-revalidate” /> <meta http-equiv=“Pragma” content=“no-cache” /> <meta http-equiv=“Expires” content=“0” /> <title>Document</title></head>那么这些标签有什么作用呢?解释meta,称为元数据。元数据是对数据的描述。可能你会有些疑惑,什么叫做元数据。举个例子,以前在背单词的时候,在单词表上只会有"hello: 你好",以及音标信息,还会有一段对hello的解释,而这段解释可以理解为元数据,即描述数据的数据。html,本身是描述信息的数据,而mata就是对整个html文件信息的描述。在mata中,常见的有两种格式<meta name=“keywords” content=“编程, 前端, 极客, Call, Apply, Bind”><meta http-equiv=“Cache-Control” content=“no-cache, no-store, must-revalidate” />meta使用k,v的结构,在content中是对name的一个详细描述,比如name=“keywords”,content是说明当前的html中是编程, 前端, 极客, Call, Apply, Bind关键字的描述。比如name=“viewport”,主要是应用于移动设备,决定当前页面的一个锚,所有的element的像素布局相当于这个viewport定义的大小。而http-equiv是则是http的传输相关,如上的Cache-Control,当前页面使用content中对应策略,no-cache不使用客户端的缓存。meta和SEO因为meta是对当前页面的内容的精简描述,所有有利于SEO,比如在meta中设置了keywords,description等,搜索引擎会放出"蜘蛛",去抓取页面中的"关键信息",然后放到搜索引擎的服务中,所有设置合适的meta有利于搜索引擎优化使用第三方的服务,生成meta组如果你不知道应该有一个什么样的meta标签组,可以使用该网站HEY META,你只需要输入如description,keywords等信息,它会生成专门针对Google,Facebook,Twitter的meta组,喜欢的可以访问尝试下。如使用一个之前博客的,生成的meta组如下<!– HTML Meta Tags –><title>Vue组件三-Slot分发内容</title><meta name=“description” content=“Vue组件三-Slot分发内容开始Vue组件是学习Vue框架最比较难的部分,而这部分难点我认为可以分为三个部分学习,即 组件的传值 - 父组件向子组件中传值 事件回馈 - 子组件向父组件发送消息,父组件监听消息 分发内容 整片博客使用的源代码-请点击 所以将用三篇博客分别进行介绍以上三种情况和使用 木头楔子/插槽在学习内容分发之前,我们先了解一个木工会经常使用的一种拼接两个家具的接口——木头楔”><!– Google / Search Engine Tags –><meta itemprop=“name” content=“Vue组件三-Slot分发内容”><meta itemprop=“description” content=“Vue组件三-Slot分发内容开始Vue组件是学习Vue框架最比较难的部分,而这部分难点我认为可以分为三个部分学习,即 组件的传值 - 父组件向子组件中传值 事件回馈 - 子组件向父组件发送消息,父组件监听消息 分发内容 整片博客使用的源代码-请点击 所以将用三篇博客分别进行介绍以上三种情况和使用 木头楔子/插槽在学习内容分发之前,我们先了解一个木工会经常使用的一种拼接两个家具的接口——木头楔”><meta itemprop=“image” content=“http://raw.githubusercontent.com/beyondverage0908/Blog/master/resoure/componet_slot_qizi.jpeg"><!-- Facebook Meta Tags –><meta property=“og:url” content=“https://beyondverage0908.github.io/2018/05/13/blog-2018-05-13"><meta property=“og:type” content=“website”><meta property=“og:title” content=“Vue组件三-Slot分发内容”><meta property=“og:description” content=“Vue组件三-Slot分发内容开始Vue组件是学习Vue框架最比较难的部分,而这部分难点我认为可以分为三个部分学习,即 组件的传值 - 父组件向子组件中传值 事件回馈 - 子组件向父组件发送消息,父组件监听消息 分发内容 整片博客使用的源代码-请点击 所以将用三篇博客分别进行介绍以上三种情况和使用 木头楔子/插槽在学习内容分发之前,我们先了解一个木工会经常使用的一种拼接两个家具的接口——木头楔”><meta property=“og:image” content=“http://raw.githubusercontent.com/beyondverage0908/Blog/master/resoure/componet_slot_qizi.jpeg"><!-- Twitter Meta Tags –><meta name=“twitter:card” content=“summary_large_image”><meta name=“twitter:title” content=“Vue组件三-Slot分发内容”><meta name=“twitter:description” content=“Vue组件三-Slot分发内容开始Vue组件是学习Vue框架最比较难的部分,而这部分难点我认为可以分为三个部分学习,即 组件的传值 - 父组件向子组件中传值 事件回馈 - 子组件向父组件发送消息,父组件监听消息 分发内容 整片博客使用的源代码-请点击 所以将用三篇博客分别进行介绍以上三种情况和使用 木头楔子/插槽在学习内容分发之前,我们先了解一个木工会经常使用的一种拼接两个家具的接口——木头楔”><meta name=“twitter:image” content=“http://raw.githubusercontent.com/beyondverage0908/Blog/master/resoure/componet_slot_qizi.jpeg"><!-- Meta Tags Generated via http://heymeta.com –> ...

January 24, 2019 · 1 min · jiezi

我从HTML的meta中学到了什么

metameta中有这样几个常用属性:http-equiv,name,content,包括html5新增的charset。注意:content属性用来存储meta信息的内容,所有的主流浏览器都支持它,但它一般很少单独使用,我们一般使用http-equiv或name来定义content属性信息(或值)的名称,http-equiv和name在一个meta中通常只能用其中一个。现介绍常用的,再介绍一些其它的。name常见的有:application-name // 代表web应用程序的名字author // 规定文档作者的名字description // 对页面的描述,SEO需要用到keywords // 页面的关键字词,多个用逗号隔开,SEO需要用到编码格式<meta charset=“utf-8”>视窗宽度<meta name=“viewport” content=“width=device-width, inital-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”/>width:用于设置视窗口的宽度,可以设置为device-width(设备的宽度),也可以是自定义的值。initial-scale:用于设置缩放比例,可以是任意数值的比例。minimum-scale:用于设置最小缩放比例。maximum-scale:用于设置最大缩放比例。user-scalable:用于设置是否禁止用户缩放页面。自动识别<meta name=“format-detection” content=“telphone=no”>telphone:是否禁止浏览器识别页面中的电话号码。no:禁止,yes不禁止eamil:是否就职浏览器识别页面中的邮件地址。no:禁止,yes不禁止用http-equiv于模拟一个 HTTP 响应头我们都知道,HTML4.0.1定义html文档的编码方式是如下面这样:<meta http-equiv=“content-type” content=“text/html; charset=UTF-8”>但是在HTML5中我们可以像下面这样定义:<meta charset=“utf-8”>那么它除了这样的使用场景外,还有别的一些吗。如果你强制刷新页面,可以驶入像下面这样的代码:<meta http-equiv=“refresh” content=“3”>如上面的代码的意思是:强制浏览器每3秒刷新一次。但要慎用。当然,还有一些其他的好用的效果,如果你想要给应用定义多套样式,然后根据用户选择来加载不同的样式,你可以将http-equiv设置为default-style,然后你设置content的值为link或style的对应值。具体可参考如下代码:<meta http-equiv=“default-style” content=“s1”><style title=“s1”>body { background: red;}</style><style title=“s2”>body { background: green;}</style>以前,我不知道style或link中添加title有什么用,但上面的例子是它的一个用途。针对苹果设备的设置// 下面代码来自天猫移动web<meta name=“apple-mobile-web-app-capable” content=“yes”/> // 可以让app运行于全屏模式<meta name=“apple-mobile-web-app-title” content=“TMALL”/> // 可以让app的标题不同于页标题<meta name=“apple-mobile-web-app-status-bar-style” content=“black-translucent”/> // 配置app的状态栏,可设置为default, black, 和 black-translucent。状态栏设置,可参考Changing The iOS Status Bar Of Your Progressive Web App当然,我们也可以设置书签或者快捷键的图标。可参考如下代码:<link href=“https://placehold.it/72" sizes=“72x72” rel=“apple-touch-icon-precomposed”>可以根据不同的型号设备,来设置不同的sizes。也可以设置它的启动背景图。可参考如下代码:<link href=“https://placehold.it/1496x2048" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)” rel=“apple-touch-startup-image”>当然,我们也可以设置其它的meta,用来控制不同浏览器的行为,也可以控制不同搜索引擎的行为。其他meta的使用可参考gethead meta 或 模拟原生IOS效果。其他的内容可关注我的github ...

December 5, 2018 · 1 min · jiezi

一定要 http-equiv=X-UA-Compatible content=ie=edge?

博客地址Preface平时会用 vue 写新项目,老项目就在原有基础上更新。对于 vue 这种框架,使用官方的脚手架通常就避免了很多问题,就像平时用模板创建新的单页一样。然而有时总是会遇到些不按模板走的代码,虽然跑起来也没有问题,但是放到有些浏览器上就有 bug 了,这个时候对既有模板的理解和掌握就很重要了。Main当我用 html 模板创建一个新单页时,拿到的页面是这样的,vue 也是类似,至少三个 meta 标签基本都是一样的:<!DOCTYPE html><html lang=“en”><head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <meta http-equiv=“X-UA-Compatible” content=“ie=edge”> <title>Document</title></head><body></body></html>viewport 是在兼容移动端时才了解的内容,费了不少功夫。而 X-UA-Compatible 则是在遇到非常规代码的时候才想起来的。有一回改个老项目,用了 transform,在 ie11 上测试,没有用,而且在它的工具栏里样式表里根本看不到我写的代码,这个时候我就好奇了,这是 ie11 啊,怎么会不支持 transform 呢?然后我瞄了一下开发者工具,大概是这样的:然后我就好奇了,为什么会是 ie7 模式呢?我明明装的是 ie11 浏览器啊,然后脑袋一闪,好像明白了什么,看了看 html ,果然没有: <meta http-equiv=“X-UA-Compatible” content=“ie=edge”>加上之后,再刷新,网页就正常了。在这件事之前,我知道这个东西,但是因为是用的模板,一直没有遇到过这个问题,而且通常来说,我会以为,我既然是在 ie11 里打开的,默认你也没有理由用 ie11- 的文档模式去渲染啊,结果就错了。后来看到 SO 上高票答主大概是这么解释 ie 的行为的:ie 会用它认为最好的方式去渲染页面,如果没有上面那行代码的话此外,ie11 已经开始废弃上面那个了,如果不兼容 ie 的话,其实上面的代码也可以不用写了,不过目前为止 html 模板和 vue 的模板都还是默认支持的。而上面的那行代码实际意思呢,就是:Edge:始终以最新的文档模式来渲染页面。忽略文档类型声明。对于 IE8,始终保持以 IE8 标准模式渲染页面。对于 IE9,则以 IE9 标准模式渲染页面。当然 ie 还可以等于其他值,不过其他值大多都是老版本,目前而言,都没有必要去纠结了,譬如:“IE=edge"“IE=11"“IE=EmulateIE11"“IE=10"“IE=EmulateIE10"“IE=9"“IE=EmulateIE9…EndingReferenceWhat does <meta http-equiv=“X-UA-Compatible” content=“IE=edge”> do? ...

November 23, 2018 · 1 min · jiezi

判断ios和Android及PC端

在做移动端时,想起用navigator.userAgent来对浏览器类型进行判断,查了点资料,在这里总结下还有一个就是移动端的缩放问题,在meta标签中进行设置,对部分浏览器进行强制性的限制1.navigator的一些常用属性navigator为window对象的一个属性,指向了一个包含浏览器相关信息的对象navigator.appVersion 浏览器的版本号 navigator.language 浏览器使用的语言 navigator.userAgent 浏览器的userAgent信息其中userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。2.较常见的ios端、Android端及PC端的判断简单点的/* 判断浏览器类型 /let userAgent = navigator.userAgent;/ 判断手机型号 /let app = navigator.appVersion;/ Android 终端 /let isAndroid = userAgent.indexOf(‘Android’);/ ios终端 /let isMac = !!userAgent.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);封装性的/ 判断各类型方法 /const browser = { version: function() { const userAgent = navigator.userAgent; return { / 判断是否是ios / ios: !!userAgent.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), / 判断是否是Android / android: userAgent.indexOf(‘Android’) > -1 || userAgent.indexOf(‘Adr’) > -1, / 判断是否是移动端 / mobilePhone: !!userAgent.match(/AppleWebKit.Mobile./), / IE内核 / trident: userAgent.indexOf(‘Trident’) > -1, / opera内核 / presto: userAgent.indexOf(‘Presto’) > -1, / 苹果、谷歌内核 / webkit: userAgent.indexOf(‘AppleWebKit’) > -1, / 火狐内核 / gecko: userAgent.indexOf(‘Gecko’) > -1 && userAgent.indexOf(‘KHTML’) == -1, / 判断是否是IPone手机或者QQHD浏览器 / iphone: userAgent.indexOf(‘iPhone’) > -1, / 判断是否是iPad / iPad: userAgent.indexOf(‘iPad’) > -1, / 判断是否是web应用程序(能够让用户完成某些特定任务的网站),没有头部和底部 / webApp: userAgent.indexOf(‘Safari’), / 是否是微信 / weixin: userAgent.indexOf(‘MicroMessenger’), / QQ / QQ: userAgent.match(/\sQQ/i) == ’ qq’, } }(), / 判断浏览器使用的语言:navigator.language除IE浏览器外的浏览器使用的语言, * navigator.browserLanguageIE浏览器使用的语言 */ browserLanguage: (navigator.language || navigator.browserLanguage).toLowerCase()};if(browser.version.ios || browser.version.android || browser.version.mobilePhone) { console.log(‘是移动端’);}3.meta标签设置如对浏览器进行强制全屏的设置(UC全屏),webapp模式等<meta charset=“UTF-8”><!– 视图窗口,移动端特属的标签 –><meta name=“viewport” content=“width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no”><!– 避免IE使用兼容模式 –><meta http-equiv=“x-ua-compatible” content=“IE=edge”><!– uc强制竖屏 –><meta name=“screen-orientation” content=“portrait”><!– QQ强制竖屏 –><meta name=“x5-orientation” content=“portrait”><!– UC强制全屏 –><meta name=“full-screen” content=“yes”><!– QQ强制全屏 –><meta name=“x5-fullscreen” content=“true”><!– UC应用模式 –><meta name=“browsermode” content=“application”><!– QQ应用模式 –><meta name=“x5-page-mode” content=“app”><!– 是否启动webapp功能,会删除默认的苹果工具栏和菜单栏 –><meta name=“apple-mobile-web-app-capable” content=“yes”><!– 这个主要是根据实际的页面设计的主体色为搭配来进行设置 –><meta name=“apple-mobile-web-app-status-bar-style” content=“black”><!– 忽略页面中的数字识别为电话号码,email识别 –><meta name=“format-decoration” content=“telephone=no,email=no”><!– 启用360浏览器的极速模式(webkit) –><meta name=“renderer” content=“webkit”><!– 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 –><meta name=“HandheldFriendly” content=“true”><!– 微软的老式浏览器 –><meta name=“MobileOptimized” content=“320”><!– windows phone 点击无高光 –><meta name=“msapplication-tap-highlight” content=“no”>正在努力学习中,若对你的学习有帮助,留下你的印记呗(点个赞咯^_^)往期好文推荐:webpack打包(有面试题)纯css实现瀑布流(multi-column多列及flex布局)画三角形 ...

September 28, 2018 · 2 min · jiezi