JavaScript和下一个数据编程

2021-06-04 10:16:48

我最近在杂草上变得非常远,了解了未来的Data编程要看起来像什么。我在Python中使用熊猫和Dloplr和Rrespcially。但是我开始看到脱落的有趣的东西的形状。我一直在研究一个涉及SpackPlot Visualizationsat的项目,这是一个庞大的比例,最多可发送到浏览器的10亿积分。在这样做,两件事已经清楚了:

JavaScript是典型的前端语言,越来越多地成为Python和R的数据工作的后端。

作为webgpu和新的二进制序列化格式 - 就像箭头 - 来自年龄,它' s' s' s胃地理json' s缓慢。越来越多的R和Python将成为JS或WASM包装。就像在2000年代一样,他们是Java周围的包装。它' ll非常奇怪。

- Benjamin Schmidt(@Benmschmidt)2020年12月23日

我是关于Python和R的写作,因为它们完全占主导地位的数据编程。 (通过数据编程,我的意思是基本上'数据科学';不是一个科学家,我有麻烦用它来描述我所做的事情。)经济学家的一些恐龙仍然使用Stata,一些巫师使用朱莉娅,你想和朱莉娅使用朱莉娅基本上的数据。我们使用的编程课程的大问题我们使用的数据很大程度上在CPU上运行,通常主要在一个核心上。这一直是速度方面的问题;当我第一次切换到2011年左右的Topython时,我疯狂地搜索了Gil(GlobalInterpreter Lock)周围的方法,使语言即使在onthreads上也可以使用多个核心。在某些方面的情况下,一般的事情已经好一会儿,itseems就像至少是线性代数例程一样,可以利用计算机的资源。

另外,所有程序的图形和界面基元已开始移动到Web。如果我开始在几年后甚至严重做这种工作,我甚至都会注意到曾经曾经换过了。我从来没有真正使用TCL / TK interfaces r,但我总是意识到他们存在; jb michel浏览器的第一个版本,jock michel浏览器在2008年orsomething的情况下被建立在一些python库中。这是正常的。但在过去的十年中,如果youvant建立用户面对的元素来描述类似于“一个按钮”或“鼠标悬停”,则阻力最少的路径是使用HTML构想,而不是它们的操作系统概念。十五岁的新曼大楼建成第一张书虫UI很快看到它需要一个javascript绘图图书馆。这一集成正在变得更紧密,更坚硬的数据编程陆地。我有合作者和毕业生,他们将其捆绑到闪亮的应用程序捆绑到闪亮的应用程序,以装饰有各种滑块和文本输入字段,Intopublishing R和Python代码作为具有HTML / JS导航的在线书籍。

Jupyter笔记本和Rstudio IDE自己是这一转型的一部分;由javascript的一个看不见的粉迹一起举行的北京代码。同样,该平台或多或少位于早期模型的平台。当我第一次学习,我从Textedit粘贴到核心R Gui;我也在Emacs的Roadinto Ess-Mode上掉了一点点。但是,如果您需要不断地检查DataFrame,重新运行模块的样本,并查看您的regulary表达式是否正确清理数据集,即使您在某些时候将代码捆绑到模块中也使用NotebookInterface。

而对于可视化,JavaScript正在进入这个空间。像许多人一样,我被解除了能够使用Altair而不是Matplotlib,而不是维护熊猫DataFrame;我不三思而后行将GGPlots丢弃了关于GGPlot的教训,他们开始在鼠标悬停在鼠标悬停中。 GGPLOT和Matplotlib仍然是公布的roost的王者,但在习惯于网上常规的互动性的响应图之后,我们将期望探索性图表同样的事情;正如HTML的选择菜单和按钮填充此角色笔记本界面,JS图表库对图表接口执行相同的图书馆。

让我很清楚 - 我会在这个下面说的事情肯定是王星。我不是我要说的话。我不知道是!网上制图有一些类似的类比,我已经学会了一批弗拉基米尔agafonkin。许多工具思考我在与Doug Duhaime和David McClure的一系列通信中了解到。但是该领域足够不稳定,我认为其他人可能会在我拥有的Samedirection中偶然偶然。

整个时期,GPU也已经取代了CPU履行。 r / python接口对此是棘手的。 numba种类;我不时地摆弄了巨大的;我从来没有故意在R中获得GPU,虽然我有可能而不是知道它。即使目的不是真正的神经网络库 - 所以自己的目的,也常常使用Tensorflowor炬的抗性对GPU计算的路径往往使用TensorFlowor焊炬 - 例如,使用神经网络界面而不是CPU One甚至训练UMAP模型。虽然我更喜欢另一个。

其中大多数依靠CUDA访问GPU。 (当我说我不知道​​我不知道什么时候 - 这是它的核心。)如果youmant在这些平台上进行编程,你越来越开机了一个CloudServer并在那里运行重型模型。 CUDA配置是一种痛苦,无论如何,您的家用机器的家用机器都没有GPU。如果你想在云中托伦一切,这很好 - 谷歌只会免费赠送TPU。但是在几百万行上逐个/申请/总结,这是矫枉过正的;而云计算相比,云计算非常便宜你的家用笔记本电脑,云存储是疯狂的。数字海洋收取一百美元的一百元,以便跟上数据库支持大约小别墅;对于工作的工作,我将几个数据来自哈蒂托堡,我会在没有大学的情况下丢失,在家里的桌子上的12TB硬盘上。

当我开始使用webgl来在JavaScript中制作图表时,我完全吹嘘它可以做的事情。我习惯坐在等待GGPOT,以渲染几千个点。我曾经在Geopandas中的多边形操作漫长而昂贵。当我想加载地理杂志文件时,我习惯于起床。

但我可以使用JavaScript在几乎没有任何时间从原始三角形在Randompolygons中生成数百万积分;然后使用Reglit可以快速动画,以使无缝缩放合理。例如,这里是纽约城区的每一次投票(不包括缺席者)Inthe 2020选举。 (希望这嵌入可观察的负荷......但如果它没有,那也是那种点的那种。)

挖掘杂草以制作更加精致的可视化,我概念为什么。 Apache Arrow公开您工作的数据的极低级别模型,这鼓励您对精确的架构和底层类型进行很多思考。在Python中,我已经习惯了numpy的这种工作;在r,我只做了一点孪生。但在现代JS中,BinaryArray缓冲区建立在语言中。当我开始滋补js时,我认为它变慢;但是,Web开发人员对Speedthan的任何其他高级,动态类型语言都更加迷恋,我已经看到了。内置于Chrome中的分析工具非常强大;而且谷歌,特别是对使JS令人难以置信地跑步的巨额投资,因为摩擦力的网络体验巨大地赚了巨额资金。当然,很多网站areslow是因为它们带来了兆字节的反应设施和休闲膨胀;当然,DOM慢慢地工作。但JavaScript本身很快。

在我的前几年教学数字人文学科,可能是最重要的,谢谢你正在帮助学生管理他们的本地Java安装,以便他们可以在那里获得主题建模算法的最佳实现。现在,我们通常在Gensim,结构主题典范等中使用较慢和劣等的实现。(对于从Gensim和Sklearn的HowInfiorious of HowInfiorioreior的Ted Underwers和Yoav Goldberg进行了一个有趣的讨论,并且Sklearn来移位槌,请参阅这里的TwitterThreads。)但是JavaScript在Malket Runching跑步的David MIMNO说,JavaScript工作了很多。

最后,将算法与界面集成在一起。浏览器是一个高性能计算环境(JavaScript比Python快得多)嵌入在出色的交互式图形环境中。此外,还有一个隐藏在下面的代码环境!打印那些变量!

- David Mimno(@dmimno)2020年10月26日

虽然JavaScript具有令人恐惧的语言,但帖子ES2055帖子已经在许多情况下使其相对容易地编程.Maps,for ... ......所有工作就像你期望的那样(与当天不同我花了几个小时在一个Datavisualization中狩猎,在一个Datavisualization中狩猎,当我制作包括词汇中的某个词的WordCounts的词库时出现了一个datavisualization的错误;以及许多句法特征,如类,阵列破坏和arranfunction notatingare比他们的python等价更愉快。 (完全披露 - 偶然是语言十年的十年,我仍然发现Python的空白Syntaxgimmicky和心脏只是不喜欢这种语言。但这是一个遗漏后的一天。)

如果JavaScript快速,WebGL就是在几毫秒内铺设了两百万分钟的邦克斯,在几毫秒内铺设了两百万分钟?没问题 - 你甚至可以重新生成每一帧。

WebGL使用与Apache箭头中的浮点缓冲区相同,因此将数据块直接从磁盘(或Web)直接到渲染器中,而不均为(仍然快速)JavaScript计算。这很困难,不安做错了。 (我发现了Regl在完美的抽象层面上投球,但我仍然偶尔将在GPU上分配数千个缓冲区,其中我的意思是只创建一个持久的一个)。

在网上制图中,基于Protobuffer的矢量文件做一些类似的内限像MapBox.GL和Deck.Gl.一旦您已经看过了如何看待如何,基于JSON的Formats的开销就会难以胃部,并且可以是多少压缩,二进制数据。

在使用WebGL时,我已经看到了多快。对于likeArray平滑,计数要应用复杂的数字滤波器,逐个和总和,可以开始以完全并行化的形式在数据帧上应用关键合理布拉的大多数元素。

但是我从中留下了这样的事情,只有大多数ad-hoc情况,因为我们的数据计算也很可怕。我永远不会告诉任何人现在,现在,除非他们完全需要。属性缓冲区只能浮动,因此您需要在发布之前转换所有整数类型。在许多情况下,DataMay被缩小为半精密点,双精度浮动指向较难的是,整个摇摇晃晃的结构构建了为它们的巨大成本支持,用于跨设备的纹理类型(苹果似乎构成了特殊问题),所以我“像Ricky Reusser一样贬低,伟大的LengeSto支持各种倒退。而对数据编程至关重要的事情,如索引查找列表或通过传递的阵列循环,几乎是不可能的。我发现在WebGL的乐趣中编写复杂的着色器,但始终涉及系统的意图。

但是最后两件拼图在地平线上潜伏着。 Web汇编-WASM文件 - 给出另一种方式为JavaScript虚拟机器编写的方法可以避免JavaScript的陷阱是一种设计不良的语言。少数人在Rust中搅拌的项目持有更快地制作浏览器的承诺。 (如果我现在要在新的编程语言上遍历一下几个月,那么它可能是RUDE;在写作WebGL计划中,越来越多地发现自己相当于写自己的垃圾收集器,而是作为一个高级别我从未学习过足够的c要真正了解基本概念。)回到2000年代,Python和R生态系统用PackageSthat乱扔了杂乱无章,以各种方式依赖于Java虚拟机。在2010年代,它就像他们转移到基础C / C ++依赖关系一样。但是,鉴于如何进入它,我认为我们将开始看到事情使用javascridulual机器越来越多。当我想使用一些D3球面的r时,这就是我称之为的方式;和Jerome Ooen的v8包(用于运行JSVM,或者我们所谓的任何话语)正在接近与verovere rjava相同的下载级别。我怀疑几乎所有这些都运行只是javascript.if它开始成为在任何系统上运行Pre-compiledrust和c ++二进制文件的现实方式......这很有意思。

最后一个多米诺骨牌有点偏离,但可能是泰国重要的。 WebGL ISSLOW垂死,但大型科技公司都齐全地共同创建WebGPU作为从浏览器中谈论的下一代标准。它在现有的GPU接口之上构建了特定的设备(Apple等)的像样(Apple等)的像vulkan和金属,我严格抵制了学习。

WebGPU将替换WebGL以用于快速浏览器图形。但是WebGL中的重型计算能力是如此诱人,致命地解散了一些浪漫主义已经开始做的问题。 reusser工作中的东西令人惊叹;检查有关“MultiScale Tying模式”的笔记本,它在有机斑和十九世纪的替代品之间创造了华丽的ImageShalfway

我仔细阅读了WebGPU规范的草案,但它肯定会允许处理事物的莫兵。已经存在至少一个用于WebGPU的线性代数(即Blas).I I只能想象对更多数据类型的支持将使许多简单的逐个滤波器应用功能完全在任何计算机上的GPU-LAND上都可以浏览网络。

当我在2004年开始回来时,我花了几个小时滋补了SQL支持,似乎是一个巨大的数据集似乎:数百万行通过种族,学院,性别和种族进行了关于学生专业的数据。我开始了在我晚上离开办公室之前,Windows Desktop将图表出来,然后第二天早上回来工作到图像文件夹。现在,它是feasibleto发送一个唯一略微浓缩的摘要总结为250万行,为浏览器工作,整个数据集可以很容易地符合GPU内存。一般,通常可用的GPU存储器之间的区别(例如,0.5 - 4GB)Andram (2-16GB)不太大,因为我们不会发送大量数据.Data分析和整形通常是非常平行的。

此捆绑滚动后,它将更快,更方便,在许多情况下,它将能够使用零配置运行。去年推出的Arquero库已经带来了Dopltr的大多数特别重要的特征Pandas API以几乎可比的速度进入可观察。与二进制集成或不同的后端,它 - 或类似的东西 - 可以轻松成为教学的基本平台,以教授数据科学课程所有大学都开始发布。甚至没有,r / python的巨大优势在r / python for Hotualization Speed(由于GPU集成)和界面(感谢HTML5的唯一)意味着人们将越来越努力将他们的Oswodata为首先将其所探索为初始探索的网站。永远不会得到更远的。(如果我基于这些投机的内容到公开的上市公司,我会从NVIDIA开始 - 其对GPU空间的统治是部分依赖的CUDA是主要语言,而不是WebGPU和ESRI,这是flounderingas它试图使桌面软件能够轻松做Web浏览器。)

一旦这些东西开始快速,解析CSV和JSON的疯狂开销,以及他们带来的严格类型定义的丢失将会更加繁重。 - 我会在地毯上打赌,但有可能涉及箭头的可能性,HDF5,ORC,PROTOBUFFER或其他东西 - 将出现为更标准的二进制交换格式。

所以 - 这是理论 - R和Python中的数据编程语言将依赖于此。 Justas他们将Altair包装,他们包装HTML点击元素,您将开始查找更多,并且更多的包装/模块似乎只工作,并且快速地,这位19岁的人倾向于JSVM上运行。将有堆栈溢出问题,人们意识到他们已经安装了更新的V8版本,这些版本需要为某些特定包降级。将在任何地方使用的Python程序,但使用中国初创公司的GPU在Somelow定价的笔记本电脑上工作。会有几乎完全避免了GPU的东西,因为它们是如此诅咒的复杂性成像,而且生锈的忍者不做全文,以及我们从其他一切中看到的速度 - 来自难以忍受的瓶颈。(来自我所看到的,Unicode正则表达式和非球面地图预测似乎是一个可能的候选人。)

但它也将提出为什么我们应该打扰为什么继续inr和python。 JavaScript更快,并且将普遍地运行任何地方,而没有奇怪的活页夹笔记本和装载日期云的成本。在JSVMWILL帮助中运行这些语言的WASM端口,但最终奇怪。 (你会写下在浏览器中获取的Python代码到WASM,然后调用自己的JavaScript Emulatorto Build Altair图表吗?)打败了我!

但我已经开始分享用于分类的小型数据练习,以便为课程观察HQ提供,这提供了比Jupyter或Rstudio的笔记本节目更容易成功。 (如果您尚未讨论许多其他东西,则它会解析在NoteBookTopologly上的细胞之间的依赖关系和传染性的状态误差,这些误差在Jupyter或Rstudio中感染专家和特别是新手。),如果你想工作使用DataRather而不是编写代码,它几乎刷新为计算机历史ITTRIES重新构成的时刻,从在电子表格中将业务数据存储在电子表格中的业务数据的转变。上面的推文中那种形式的本国胚胎只有一个单独的,孤独的像它;但它来自Mike Bostock,The Creatorof D3和可观察的联合创始人,而且单独的是Ibothered To The Owning的原因的一部分。 Apache Arrow Platform我一直宣传由WES McKinney领导的大熊猫队领导的Absodized,他将其视为更快,更好的Pandas2的毒药,从最初由Rstudio赞助的位置,随后与NVIDIA有资助。投机为这一点,它也除了巨大的神经网络的纹身流/火炬太阳能系统之外 - 过去十年中成为霸权的工具自然漂移。(不是暗示JavaScript在附近的任何地方arrow项目的优先级列表,btw。它不是。)我希望更多的数据分析师,而不仅仅是内部人,看到这一点,或者很兴奋。

正如我所说,自2003年以来,我一直在做一些这个编程,自2010年以来大多数日子都在我的常规工作中。在那个时候,我来找我想要看到最完全可编辑的,普遍地看到什么Runnable,DataAnalysis关于开放数据 - 不是通用代码。有些人只是想要图表。有些人想隐藏他们的数据。大多数读者不想调整设置。和每个人

......