将PySpark推广到手机游戏发行领域

下载幻灯片

在Zynga,我们将PySpark环境开放给整个分析组织,包括全球的游戏分析、数据科学和工程团队。Spark民主化的结果是,我们更多的团队能够大规模地进行分析,我们的数据科学家现在负责生产预测建模管道。开放我们的数据平台带来的最大影响是团队发现了PySpark的新应用,包括大规模实验、玩家bob体育客户端下载细分、推荐系统和异常检测。PySpark是我们分析组织转型的最新一步,该组织已经从SQL迁移到Python再迁移到Spark。为了让Spark在Zynga更容易使用,我们专注于三个关键领域:基础设施、新手培训和功能。

扩展Spark使用的先决条件之一是在Databricks和其他数据平台之间建立连接。bob体育客户端下载为了实现这一点,我们编写了一组库,使我们的Spark环境能够与数据湖、数据仓库和应用程序数据库无缝工作。为了让我们的团队加入PySpark,我们创建了模板笔记本,在我们的现场会议期间举办了培训课程,并提供了学习的沙盒环境。为了简化从Python到PySpark的过渡,我们一直在利用Spark中的新特性,包括Pandas udf和Koalas来提供熟悉的接口。这一努力的结果是,我们的大多数团队现在都在使用PySpark进行大规模分析,我们的数据科学团队负责生产中的多个数据产品。本次会议将讨论我们如何让我们的分析组织充分利用PySpark,讨论我们遇到的成长烦恼,以及Spark/p>民主化所取得的成功

点击这里观看更多Spark + AI课程

免费试用Databricks

视频记录

-大家早上好,谢谢你们来参加我的会议。我叫Ben Weber,是Zynga的一名杰出的数据科学家。今天我要讲的是我们如何向整个分析组织开放PySpark平台,以及使用这种方法产生的一些新颖应用程序。bob体育客户端下载

将PySpark推广到手机游戏发行领域

所以这与本次会议的主题是一致的工具和平台的民主化是我们在Zynga所做的我们确实在规模和发展方面遇到了一些挑战但我们会详细讨论我们是如何克服这些障碍并提供一些最佳实践bob体育客户端下载来在你的组织中进行这样的扩展。所以,在深入探讨我们如何在Zynga使用PySpark之前,我想谈谈我们最近参与的一项倡议,即COVID-19,我们与世界卫生组织以及其他几十个游戏工作室合作,通过游戏传播关于社交距离的信息,我们有一个沟通渠道。

所以我们发起了一项名为“分开玩”的活动,这实际上是在放大如何在这段时间保持安全的信号,如何与人保持联系,同时在这个前所未有的时代保持安全。所以这与我们通过游戏连接世界的使命是一致的,我很自豪地提到Zynga一直是其中的一部分。

今天我们要讲的是,我们是如何向整个分析组织开放PySpark平台的。bob体育客户端下载现在,它的工作方式基本上是,Zynga分析部门的每个人(现在超过50人)都可以通过我们所利用的数据平台接触到PySpark。bob体育客户端下载我们将讨论我们是如何扩大规模的以及在采用过程中遇到的一些挑战以及如何让更多的人参与到一些工具和材料中来,我们必须将这些工具和材料放在适当的位置,才能真正扩大采用规模,我们还将讨论我们在做这些工作时面临的一些挑战。

外卖

为了使其易于管理,我们将讨论我们已经实施的一些培训以及政策,因此就这个平台而言,它不是一个狂野的西部,而是团队可以有效地协作和跨团队合作来构建新颖的应用程序的地方。bob体育客户端下载所以我提到过,通过向更广泛的团队开放平台,我们实际上看到人们使用了我们在最初的小团队中没有预料到的方式bob体育客户端下载。所以这是一个关键的收获,就是这种平台的开放确实导致了它的有趣使用,因为更多的团队正在使用它来解决不同类型的问题。bob体育客户端下载所以,很高兴看到车队能够用它完成什么。

今天的议程首先是关于手机游戏发行以及分析小组在这类组织中的作用。我们将讨论我们如何开放平台以及我们面临的一些挑战。bob体育客户端下载然后我们将讨论我们从中学到的一些经验教训,以及我们如何在保持成本和功能的同时扩展它。最后,我们将深入研究通过该平台构建的一些示例应用程序。bob体育客户端下载

首先,我们来谈谈手机游戏发行如果你还没听说过Zynga我们是一家手机游戏发行商我们的工作室分布在6个国家很多总部都在旧金山就发行功能而言这是一个非常集中的功能围绕着市场营销,法律,公司发展这在某种程度上支持着我们的工作室。所以基本上我们的工作室遍布世界各地,我们有强大的发行功能来帮助这些工作室运营。

就我们现有的游戏组合而言,我们有6款游戏,最近有8款,正如我们昨天宣布的那样,我们实际上正在收购巅峰游戏,这将把玩具爆炸和香椿爆炸带到我们的永久特许经营系列中,这些游戏每年的收入超过1亿美元,我希望玩家能够玩上几年。所以,我们面临的一个有趣的挑战是,我们有这样的嵌入式分析团队,他们有不同类型的数据源,我们正在为所有这些不同的游戏收集不同类型的事件。所以,这是我们面临的挑战之一,我们集中了收集数据的工具,但分析和团队的发现有很大的不同,基于团队收集的遥测技术。所以,我们有赌场游戏,社交老虎机游戏,和朋友玩字谜游戏,还有赛车游戏,以及各种不同的合并和匹配机制游戏。所以,为了为我们的游戏团队找到真知灼见,我们能够在广泛的游戏组合中工作。

就Zynga的分析结构而言,Zynga实际上是两个学科的结合,在Zynga公司的不同部门有分析学科和工程学科,但我们本质上是一个由分析、数据科学和分析工程团队组成的组织。

Zynga分析

所以我们有嵌入式游戏团队,他们实际上与游戏团队在一起,与产品经理和工作室领导层合作,真正理解游戏的发布,运行业务指标以及任何正在进行的实验,真正调整功能,并致力于改善游戏的生命周期。还有一个中央分析功能,我也是其中的一员,它补充了我们的发行平台,它做了一些事情,比如改善我们的营销努力,更有效地利用我们多年来的收购支出,支持各种游戏组合的倡议,而不是特定于一款游戏。bob体育客户端下载然后我们有我们的分析工程团队,负责建立和维护我们的数据平台,该平台吸收数据,提供数据湖和数据仓库,以及游戏服务调用或提供实时个性化的端点。bob体育客户端下载

Zynga发行平台bob体育客户端下载

所以就团队实际执行的一些功能而言,有一些是我们已经做了很长一段时间的,还有一些是随着我们能力的增强而变得越来越流行的新功能,但第一个是我们游戏团队的真正洞察力。所以这是分析和报告标准的商业智能管道,你需要理解运行商业指标以及理解游戏体验的不同部分。所以这将着眼于新用户的漏斗,并了解我们可以在哪里调整第一次用户体验。这基本上是了解我们已经推出的功能的影响,并与产品经理一起确定如何推出。我们谈论过很多次的一个关键功能是Zynga通过这种对实验的关注。我们有一个标准化的平台,允许产品经理和分析师进行实验,bob体育客户端下载我认为这些实验可以应用到我们的游戏中,我们已经在某种程度上普及了Zynga的实验方面,现在我们也在开放其他工具。所以有很多关于实验的实践,我们一直用来调整我们的游戏,但我们最近正在做的实际上是建立个性化服务,使用机器学习来优化游戏玩法或其他类型的功能,或根据我们从玩家那里收取的费用来调整游戏。这就像使用强化学习去理解何时最好地向玩家发送通知。这就是我们真正升级工具堆栈的地方,让我们的分析团队与我们的工程团队在这些非常有趣的平台上更紧密地合作。bob体育客户端下载发行平台的另一个关键功能是营销优化,用户获取是任何手机游戏发行商的重要组成部分,这是我bob体育客户端下载们想要确保我们利用工具来构建这种自动化工作流程的地方。

自Zynga于bob体育客户端下载2007年推出首款游戏以来,我们的平台经历了多年的发展。使用数据仓库追踪游戏中的参数并找到a /B测试的结果已经成为一大焦点。这是Zynga过去十多年来的主要业务,现在仍然是我们分析功能的核心基础。这主要是与SQL客户端一起工作,并直接对我们的数据仓库运行查询。我们已经用我们的其他编程语言做了一点脚本和回归建模,但我们并没有真正标准化。直到2017年,我们才真正进入了Zynga的新时代,我称之为笔记本时代,因为我们开始将python作为我们想要使用的标准语言。和大多数分析师花大部分的时间在JupyterLab而不是SQL客户机或只是在平面文件工作,这也是一个时间,我们开始使用GitHub JupyterLab的协作和我们实际使用环境有一个标准的生态系统,所有的图书馆都是相同的在环境中,我们的团队正在使用这样的问题而言,共享笔记本,笔记本电脑在不同的机器上运行的能力。这是一种很好的标准化工具的方式,便于协作和共享。我们现在所处的是我所说的生产时代,它使用Apache Spark扩展到大型数据集,但它也将数据产品投入生产。这是为Zynga的其他团队提供的网络工具,同时也与我们的工程团队合作,建立像模型端点这样的东西,我们使用机器学习和强化学习来提供这些个性化服务,游戏团队可以利用这些服务来开发他们的产品。

以上就是Zynga发布功能的概述。在过去的两年里,我们所做的改变让我们的平台变得更加大众化,而不是受限,我们的平台最初仅限于一小部分数据科学家,它更多的是一种选择加入的方式,就进入平台而言,这样你就可以真正地构建工具。bob体育客户端下载大约两年前,我们改变了它的运作方式,我们基本上使它不再是可选择的,但基本上每个人都可以访问这个平台,然后我们希望确保人们以合理的方式使用它。bob体育客户端下载所以,这就是我们希望每个团队都能够构建数据产品的地方,但结果是,你有团队需要维护这些数据产品,并拥有更多的所有权。所以,这是一种权衡,因为这是一种标准化的好方法,因为每个人都有一个共享的平台,有了数据库,就有了这些很棒的协作笔记本。bob体育客户端下载但这也意味着我们需要关注正在发生的事情,这样就不会有太多的集群,供应和成本就不会失控。

所以,说到我们为什么要开放有几个动机,其中一个关键的动机是提升我们团队的技能。所以我们想要一条职业发展的道路,这样分析师就可以过渡到下一个层次,更多地理解我们传统上与数据科学学科相一致的东西。我们在某种程度上合并了这些问题,现在我们的分析师也遇到了很多数据科学特定的问题。比如做一些回归建模或对结果进行显著性测试。所以这是一种让我们的团队成员亲身体验的方式。主要的动机之一也是标准化工具。所以我们有JupyterLab作为一个探索性的笔记本环境,我们想要一种生产环境,所以我们基本上把PySpark作为一个地方来做,我们想要围绕我们的数据平台,这样我们就可以实际扩展到大规模的数据集。bob体育客户端下载我们都有一些特殊的用例,大数据集的处理以及模型的管道是否这些都是批处理管道或管道生产系数或其他模型输出,用于实时和我们想确保我们有一个平台,可以扩展到所有这些不同的用例和我已经提到的大规模数据处理,我们常常不得不迅速转身tb的数据,这可能是在平面文件,我们需要一种集群和旋转起来bob体育客户端下载的过程。 But we also have tons of millions of daily active users and if we wanna make machine learning models based on that we need to be able to do so in an efficient way. And then the final point is we also wanted to be able to distribute ownership of some of our data products. So, we previously had an approach for where there was kind of a handoff where an analytics team would hand off kind of a prototype model to an engineering team to make it. To take it to production we now have a platform where for a lot of use cases the analytics team can own that as a self service model end to end.

所以我们面临的第一个挑战是关于平台的采用,在这个平台上,我们没有太多的材料来提升PySpark,或者PySpark和Pandas Dbob体育客户端下载ataFrame之间的根本区别。首先,我们设置了一些训练笔记本,基本上展示了如何做一些事情,比如从数据湖或数据仓库加载一个数据框架,将数据框架保存到我们的数据平台的不同输出中,以及一些标准操作,比如处理列,在pandas中删除列等很多标准操作。bob体育客户端下载

我们还在平台上建立了一些文档以及如何在维基上开始。bob体育客户端下载这是一套入门材料。我们也做了一些指导,我们从一些办公时间开始,我们基本上每周都有会议,让人们进来,了解平台,这在一开始是很好的,试图增加采用,但随着时间的推移,我们发现对这些不太感兴趣,然后转向更多的一对一或团队指导过程。bob体育客户端下载与指导相关的是,我们也有一个年度分析活动,我们在那里做了很多培训,PySpark一直是那里的一个重点。但最近,我们看到了很多的采用,当我们有跨团队的项目和更多的合作时。所以我提到了我们的分析团队与我们的分析小组合作,分析和工程之间的合作关系一直很好,我们实际上看到了像强化学习这样的东西被用作Python中的原型库,然后我们的工程团队能够利bob体育外网下载用他们已经建立的生产系统,这在某种程度上帮助加速了一些分析师的学习曲线,这很好。除此之外,我们对这些用于关键过程的笔记本有更多的关注。所以这是一种给团队成员反馈的方式,非常有用。

此外,为了加速这种采用,我们已经研究了使用平台的一些功能,这些功能帮助人们在一个环境中感到舒适,并能够更容易地利用现有工具。bob体育客户端下载我用得比较多的一件事是pandas udf它允许你进行分治方法。现在你的数据帧被分割,发送到不同的工作节点,然后你基本上写一个函数来操作它,就像它是Pandas数据帧一样。我的意思是,我们已经用它来做一些事情,比如在大规模数据集上进行自动化特征工程。我的意思是,我们以分布式的方式使用xgboost等工具,尽管koala库不是专门为PySpark开发的。Zynga在去年的一次会议上讨论了我们大规模使用这种方法所创造的系统。然后在spark 3中有一些我希望看到的功能可以让这些更有效率。我们还探索了koalas库,试图在Pandas和PySpark DataFrames之间提供一个中间步骤。它对于掌握一些基本操作很有用,但我们还没有看到立即的成功,我们只是试图将现有的代码从pandas移植到PySpark。但是随着这些函数的实现,我认为这将是一种更好的方式,在pandas和PySpark之间有一个中间步骤。

数据产品的DevOps

我提到的另一件事是数据产品的所有权,这真的很有用,因为随着我们扩大到更多的产品,我们现在有更多的团队负责拥有它们。因此,不仅仅是一个工程组织负责所有这些不同的项目,而那些不知道它们的复杂性的人真正负责继续维护和监控其他平台。bob体育客户端下载所以我们通常有两种生产方式。本质上有一个模型管道,它倾向于批处理模型,我们基本上有数据作业,从数据湖或数据仓库运行源数据,然后将其发布到数据同步,例如我们的基于沙发的实时应用程序。这些结果可以通过实验我们的实验平台提供,并被游戏团队立即重复使用。bob体育客户端下载这就是分析师和数据科学家可以从头到尾拥有模型的地方。我们使用模型的另一种方式是通过模型端点,我们将与我们的工程团队合作,使用AWS SageMaker进行机器学习模型,然后最近我们正在使用基于TF-Agents的内部库来实际服务于强化学习模型。我的意思是,在这种情况下,它更像是一种共享的开发模式,但我们实际上已经在这个领域看到了很多有用的合作。

我已经提到了我们面临的一些挑战但我们也会深入研究我们学到的一些东西以及我们是如何控制事情的,这样当我们扩大用户规模时,我们就不会有不受控制的成本和其他问题。

所以,我们做的一件事与JupyterLab生态系统相似的是我们创建了一个带有标准功能的库,用于我们的分析师或数据科学家想要执行的常见任务,这样就可以直接加载机身或将数据框架推送到我们的应用程序数据库中,以及与我们生态系统中的一些其他工具一起工作。

我在那个时候,我们有一些类似MLflow的功能,用来做像监控模型这样的事情,随着时间的推移,我们实际上已经弃用了很多功能,转而使用MLflow本身。但是这对于平台的建立和运行是非常有用的。bob体育客户端下载我们还有一些其他的功能通过气流进行协调或者通过工作进行交流。所以,这是一种很好的方式,让人们的接受曲线上升。

当我们扩展用户数量时,我们遇到的一个问题是对越来越多库的需求,我们发现库版本相互冲突。我们发现了一些关于tornado的问题,这些问题在集群启动期间非常难以调试。

因此,我们基本上提出了一种方法,我们有一组固定的开发集群和一组库版本,然后我们有任何按常规计划运行的作业被安排为临时集群,这样不同库版本之间就不会发生冲突。然后,当主要的软件发行版可用时,我们推出新的开发集群。如果团队或项目需要一组特定的库,比如我们在眼科项目中使用的功能工具库,那么还可以启动集群。

工作的所有权

然后在工作所有权方面,我们遇到了人们离开团队或组织的问题,然后你有这些正在运行的工作,没有明确的所有者。所以你必须建立一套流程来确保,随着时间的推移,不会产生大量的工作岗位。因此,第一件事是为作业设置备份所有者,并将这些任务映射到团队而不是个人,我们还监控这些作业的输出,以查看它们是否实际被使用,如果有很大的不活动窗口,然后我们将其标记为日落。然后,我们经常运行的工作,我们已经看到成功的工作,实际上会迁移到气流中,在那里我们有更多的眼睛,在生产中。此外,我们还构建了适用于多款游戏的数据产品,而不是构建大量特定于游戏的模型,这意味着我们每天需要运行的管道数量较少。

然后最后一个教训是在成本跟踪我们扩大很多集群和人们想做事情喜欢看加大gpu为了控制成本最主要的我们要做的就是确保我们有很好的标签,这样在AWS生态系统我们可以良好的有点管理的项目我们基本上运行成本,并确保我们能够与团队合作,优化自己的工作,确保他们使用正确的实例类型。因此,我们只需要适当的工具来有效地做到这一点。

在提高使用量方面有很多挑战,人们在这个平台上有点疯狂,试图学习该怎么做。bob体育客户端下载我们建立了一个针对一般问题的Slack频道,这对大多数用户来说都很有效,但我们经常遇到一些问题,人们会问很多问题,我们希望基本上避免这种情况,这样管理Slack频道的团队就不会不知所措。然而,对于我们发现的一些重要问题,比如集群启动,我们发现了一些常见的问题,值得以更广泛的方式解决。

基本上,为了接近我们,我们确实建立了一些sla,围绕着回答问题,或者只是和分布在世界各地的团队一起解决问题。我们想要确保人们不会等待超过一天的回复。但一般来说,随着时间的推移,解决这个问题的方法是让更多熟悉PySpark的人参与进来,可以回答问题,所以这不仅仅是一种单一的Slack频道,你也可以有特定团队的PySpark频道。所以,我们发现,实际上就像你有更多的人在平台上,他们可以为更多的团队成员提问和回答问题,而不是通过一个单一的来源来获得答案。bob体育客户端下载所以这也是我们一直在尝试着与更多跨团队项目进行合作去开发知识并提升Zynga各个团队的技能。

就像我提到的,我们已经向50多人的更广泛的组织开放了它,我们发现人们都有一些特定的用例,但有很多发现我们可以概括并在多个游戏和核心功能中使用。我们来举几个例子。第一个是一个叫做自动模型的系统,我在去年的星火峰会上展示过,我们基本上每天都在建立数百个倾向模型。所以试着预测哪些用户可能会转向或者哪些用户可能会购买。

倾向建模

我的意思是,这是发布到Couchbase,我们的游戏团队可以围绕它进行实验,并尝试调整不同的功能。所以这是一个很好的方式,实际上增加了端到端的苏打水管道,我们发现它实际上被用于广告定位,作为一个潜在的用例。这在实际应用中更新颖但我们发现的其他一些应用也很有趣。

所以我们在Zynga经常谈论的一件事便是关于玩家原型的理念,即玩家拥有不同类型的游戏玩法行为。你可以通过做一个聚类练习来定义原型或者基本上是一些用户细分练习。我们发现我们在印度和旧金山的团队都在不同的游戏中寻找相似的问题。我们实际上采用了一种标准的方法,我们基本上把K-means聚类作为一种提出不同玩家原型的方法,我们也有一个围绕营销的新颖应用,我们可以根据不同的玩家原型进行不同的目标定位。所以这并不是这个项目最初的意图,但我们确实发现了一些有用的结果,即能够将原型扩展到不止一款游戏中。

另一个项目实际上是我们在Zynga的黑客马拉松的一部分,是关于作弊检测的想法,我们想用一个自动编码器来压缩用户的游戏玩法行为,然后再解压,看看我们能不能想出一个模型来描述潜在空间中的某种活动。这里的主要想法是玩家被表示为一维图像你使用一个自动编码器来压缩和解压它当你看到输入和输出之间有很大的差异时,我们实际上可以评估这些数据点,看看是否有某种看起来可疑的活动。这就是我们的团队使用TensorFlow的地方,他们能够在我们以前无法访问这些类型的计算资源的平台上使用较大的TensorFlow实例。bob体育客户端下载所以这实际上是一种很好的方式,只需要花费大规模的Python工作流。因此,这是开放这个平台的一个很好的方式,它确实有利于我们正在探索的一些工作。bob体育客户端下载

经济模拟也是手机游戏调整的重要组成部分,我们希望了解游戏玩法的改变或添加任何功能将如何影响经济或产生某种不同的每日奖励。我的意思是,我们奥斯汀的团队能够将马尔可夫链表示为数据框架,基本上每个用户都有一个带有状态的数据框架,你可以通过不同的过渡状态运行它,通过迭代的方式这样做,我们实际上能够模拟添加新功能或调整游戏。

经济模拟

这也是我们能够应用于其他游戏的普遍方法。所以这是所有这些伟大的方法,我们一次写完,然后扩展到其他游戏。

实验也是Zynga分析功能的重要组成部分,我们已经能够使用PySpark扩展更大的数据集,以便进行显著性测试等工作。我的意思是,这就是我们利用Pandas udf分治方法的地方。

我的意思是,这允许我们使用SciPy, numpy和statmodels进行分布式工作。

另一个新颖的应用条款是我们围绕强化学习的工作,在峰会上也有关于这个的讨论,我们现在有一个实时模型服务强化学习管道,我们可以做一些事情,比如了解向玩家发送通知的最佳时机。我们在《老友记2》和《CSR赛车2》中都用过这个词。所以它正在生产中,拥有大量的用户群,这是一个展示强化学习在大量用户群中使用的好方法。所以我们实际上已经开放了这个管道的一部分,它被称为RL烘焙,在GitHub上可用。

强化学习

如果你对更多细节感兴趣请去看看峰会上的其他演讲。

所以我已经在Zynga介绍了一些PySpark的新应用程序,每当我们开放这个平台的访问时,看到我们的团队开发的一些应用程序都很高兴。bob体育客户端下载因此,我们已经讨论了一些控制成本的方法,并确保库版本不冲突,但结果很好,我们看到了开放平台带来的真正有用的输出。bob体育客户端下载因此,总结一下今天会议的发现,我想说的第一件事是,向我们的分析组织大规模地开放这一点是非常棒的。

外卖

这是你需要制定一些政策的地方,这样你的团队才能采用它,并在平台上逐步发展,但这基本上是一个拥有标准化平台的好方法,它允许更多的协作并确保工作。bob体育客户端下载所以为了得到NASA的认可我们需要一些培训材料和实际的支持但一旦我们有了不同团队的专家就能更快地提升。我的意思是,这是提升Zynga分析师技能的好方法。除此之外,最主要的收获是,你会发现一些团队正在开发一些原本不会被发现的东西,所以在Zynga开放平台是件很棒的事情,感谢你参加这次会议。bob体育客户端下载

你可以在GitHub medium和Twitter上的BGweber找到我,如果你对Zynga的分析感兴趣,我也有一个可用的工作网站。

点击这里观看更多Spark + AI课程

免费试用Databricks
«回来
本•韦伯
关于本·韦伯

Zynga

Ben Weber是Zynga杰出的数据科学家,曾在Twitch、ea、Daybreak Games和微软工作室工作过。他在加州大学圣克鲁兹分校获得计算机科学博士学位。