色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用Apache Spark和RAPIDS Apache加速Spark實踐

星星科技指導員 ? 來源:NVIDIA ? 作者:William Benton ? 2022-04-26 17:39 ? 次閱讀

這是描述預測客戶流失的端到端藍圖的系列文章的第三部分。在前幾期文章中,我們已經討論了機器學習系統的一些挑戰,這些挑戰直到您投入生產時才會出現:在 第一期付款 中,我們介紹了我們的用例,并描述了一個加速的數據聯合管道;在 第二期 中,我們展示了高級分析如何適應機器學習生命周期的其余部分。

在第三期文章中,我們將介紹應用程序的分析和聯合組件,并解釋如何充分利用 Apache Spark 和 RAPIDS Apache 加速器 Spark 的一些最佳實踐。

架構( Architecture )評審

An architecture diagram showing a federation and analytics application that takes five database tables and produces one table and a set of reports, a model training application that takes the federated table and the reports and produces a model, and a production inference application that serves the model.

圖 1 :我們的藍圖架構的高級概述。

回想一下,我們的 blueprint 應用程序(圖 1 )包括一個聯邦工作負載和一對分析工作負載。

聯合工作負載 生成了一個關于每個客戶的非規范化寬數據表,這些數據來自于五個與客戶賬戶不同方面相關的規范化觀察表的數據匯總。

第一次分析工作量 為每個特性生成一個機器可讀的值分布和域的摘要報告。

第二次分析工作量 生成一系列關于客戶結果的說明性業務報告 我們的第一期 包含有關聯合工作負載的其他詳細信息, 我們的第二期 包含有關分析工作負載的其他詳細信息。

我們將這三個工作負載作為一個具有多個階段的 Spark 應用程序來實現:

應用程序將 HDFS 中多個表(存儲為拼花文件)的原始數據聯合到一個寬表中。

因為寬表比原始數據小得多,所以應用程序然后通過合并到較少的分區并將數值轉換為適合 ML 模型訓練的類型來重新格式化寬輸出。此階段的輸出是 ML 模型訓練的源數據。

然后,應用程序針對合并和轉換的寬表運行分析工作負載,首先生成機器可讀的摘要報告,然后生成匯總和數據立方體報告的集合。

性能注意事項

并行執行

50 多年來,提高并行執行的適用性一直是計算機系統高性能最重要的考慮因素之一 ( 我們有點武斷地選擇在 1967 年確定 托馬蘇洛算法 的開發,它為無處不在的超標量處理奠定了基礎,因為在這一點上,對并行性的關注變得實用而不僅僅是理論上的。)在分析員、數據科學家、數據和 ML 工程師以及應用程序開發人員的日常工作中,對并行性的關注通常表現為以下幾種方式之一;我們現在來看看。

向外擴展時,在集群上執行工作

如果您使用的是橫向擴展框架,請盡可能在集群上而不是在單個節點上執行工作。在 Spark 的情況下,這意味著在執行器上執行 Spark 作業中的代碼,而不是在驅動程序上執行串行代碼。 一般來說,在驅動程序中使用 Spark 的 API 而不是宿主語言代碼將使您獲得大部分的成功,但是您需要確保所使用的 Spark API 實際上是在執行器上并行執行的。

操作集合,而不是元素;在列上,而不是行上

開發并行性和提高性能的一般最佳實踐是使用一次對集合執行操作的專用庫,而不是一次對元素執行操作。在 Spark 的情況下,這意味著使用數據幀和列操作,而不是迭代 rdd 分區中的記錄;在 Python 數據生態系統和 RAPIDS 。 ai 中,這意味著使用在單個庫調用中對整個數組和矩陣進行操作的 矢量化操作 ,而不是在 Python 中使用顯式循環。最關鍵的是,這兩種方法也適用于 GPU 加速。

分攤 I / O 和數據加載的成本

I / O 和數據加載成本很高,因此在盡可能多的并行操作中分攤它們的成本是有意義的。 我們可以通過直接降低數據傳輸成本和在數據加載后盡可能多地處理數據來提高性能。在 Spark 中,這意味著使用列格式,在從穩定存儲導入時只過濾一次關系,并在 I / O 或無序操作之間執行盡可能多的工作。

通過抽象提高性能

一般來說,提高分析師和開發人員在應用程序、查詢和報表中使用的抽象級別,可以讓運行時和框架找到開發人員沒有(或無法)預料到的并行執行機會。

使用 Spark 的數據幀

例如,在 Spark 中使用數據幀并主要針對高級數據幀 API 進行開發有許多好處,包括執行速度更快、查詢的語義保持優化、對存儲和 I / O 的需求減少,以及相對于使用基于 RDD 的代碼顯著改善了內存占用。但除了這些好處之外,還有一個更深層次的優勢:因為數據幀接口是高級的,而且 Spark 允許插件改變查詢優化器的行為,所以 RAPIDS Apache 加速器 Spark 有可能用在 GPU 上運行的等效但實際上更快的操作替換某些數據幀操作。

透明加速 Spark 查詢

用插件替換 Spark 的查詢規劃器的一些功能是抽象能力的一個特別引人注目的例子:在能夠在 GPU 上運行 Spark 查詢之前幾年編寫的應用程序仍然可以通過使用 Spark 3 。 1 和 RAPIDS 加速器來利用 GPU 加速。

保持清晰的抽象

盡管使用新的運行時加速未修改的應用程序的潛力是針對高級抽象進行開發的一個主要優勢,但實際上,對于開發團隊來說,維護清晰的抽象很少比按時交付工作項目更重要。由于多種原因,抽象背后的細節常常會泄漏到產品代碼中;雖然這可能會引入技術債務并產生無數工程后果,但它也會限制高級運行時的適用性,以優化干凈地使用抽象的程序。

考慮適合 GPU 加速的操作

為了從 Spark 中獲得最大的收益,在圍繞 Spark 的數據幀抽象的應用程序中償還技術債務(例如,通過將部分查詢實現為 RDD 操作)是有意義的。 不過,為了充分利用先進的基礎設施,在不破壞抽象的情況下考慮執行環境的細節通常是有意義的。 為了從 NVIDIA GPU 和 RAPIDS Apache 加速器 Spark 獲得盡可能好的性能,首先要確保您的代碼不會圍繞抽象工作,然后考慮或多或少適合 GPU 執行的類型和操作,這樣您就可以確保盡可能多的應用程序在 GPU 上運行。下面我們將看到一些這樣的例子。

類型和操作

并不是每一個操作都能被 GPU 加速。當有疑問時,運行作業時將 spark.rapids.sql.explain 設置為 NOT_ON_GPU 并檢查記錄到標準輸出的解釋總是有意義的。在本節中,我們將指出一些常見的陷阱,包括需要配置支持的十進制算法和操作。

小心十進制算術

十進制計算機算法支持高達給定精度限制的精確運算,可以避免和檢測溢出,并像人類在執行鉛筆和紙張計算時那樣舍入數字。盡管十進制算法是許多數據處理系統(尤其是金融數據)的重要組成部分,但它對分析系統提出了特殊的挑戰。為了避免溢出,十進制運算的結果必須擴大到包括所有可能的結果;在結果比系統特定限制更寬的情況下,系統必須檢測溢出。在 cpu 上使用 Spark 的情況下,這涉及將操作委托給 Java 標準庫中的 BigDecimal 類 ,并且精度限制為 38 位十進制數字或 128 位。 Apache 的 RAPIDS 加速器 Spark 目前可以加速計算多達 18 位或 64 位的十進制值。

我們已經評估了客戶流失藍圖的兩種配置:一種使用浮點值表示貨幣金額(如我們在 第一期 中所描述的那樣),另一種使用十進制值表示貨幣金額(這是我們當前報告的性能數字所針對的配置)。由于其語義和健壯性,十進制算法比浮點算法成本更高,但只要所涉及的所有十進制類型都在 64 位以內,就可以通過 RAPIDS 加速器插件來加速。

配置 RAPIDS 加速器以啟用更多操作

RAPIDS 加速器對于在 GPU 上執行 MIG ht 表現出較差性能或返回與基于 CPU 的加速器略有不同的結果的操作持保守態度。因此,一些可以加速的操作在默認情況下可能不會加速,許多實際應用程序需要使這些操作能夠看到最佳性能。我們在 我們的第一期 中看到了這種現象的一個例子,其中我們必須通過將 true 設置為 true ,在 Spark 配置中顯式啟用浮點聚合操作。類似地,當我們將工作負載配置為使用十進制算法時,我們需要通過將 spark.rapids.sql.decimalType.enabled 設置為 true 來啟用十進制加速。

插件文檔 列出了配置支持或不支持的操作,以及在默認情況下啟用或禁用某些操作的原因。除了浮點聚合和十進制支持之外,生產 Spark 工作負載極有可能受益于以下幾類操作:

鑄造作業 ,特別是從字符串到日期或數字類型,或從浮點類型到十進制類型。

某些 Unicode 字符不支持字符串大小寫(例如“ SELECT UPPER(name) FROM EMPLOYEES ”),更改大小寫也會更改字符寬度(以字節為單位),但許多應用程序不使用此類字符[或者通過將 Spark 。 RAPIDS 。 sql 。 compatibleops 。 enabled 設置為 true 來啟用它們和其他幾個。

從 CSV 文件中讀取特定類型;雖然插件( Spark 。 RAPIDS 。 sql 。 format 。 CSV 。 enabled )中當前默認啟用了讀取 CSV 文件,但讀取某些類型的無效值(尤其是數字類型、日期和小數)在 GPU 和 CPU 上會有不同的行為,因此需要單獨啟用每個類型的讀取。

加快從 CSV 文件接收數據

CSV 閱讀需要額外的注意:它是昂貴的,加速它可以提高許多工作的性能。然而,由于在 RAPIDS 加速器下讀取 CSV 的行為可能與在 cpu 上執行時的 Spark 行為不同,并且由于實際 CSV 文件質量的巨大動態范圍,因此驗證在 GPU 上讀取 CSV 文件的結果尤為重要。一個快速但有價值的健全性檢查是確保在 GPU 上讀取 CSV 文件返回的空值數與在 CPU 上讀取相同的文件返回的空值數相同。當然,如果可能的話,使用像 Parquet 或 ORC 這樣的自文檔結構化輸入格式而不是 CSV 有很多好處。

避免查詢優化的意外后果

RAPIDS 加速器將 物理查詢計劃 轉換為將某些操作符委派給 GPU 。 但是,在 Spark 生成物理計劃時,它已經對邏輯計劃執行了幾個轉換,這可能涉及重新排序操作。 因此,開發人員或分析人員聲明的接近查詢或數據幀操作末尾的操作可能會從查詢計劃的葉移向根。

A diagram of a database query execution. The first step shows joining two input relations; the second step shows the output of joining these two relations; the third shows the result of filtering the join output, producing in relatively few records.

圖 2 : 一種執行數據幀查詢的描述,該查詢連接兩個數據幀,然后過濾結果。 如果謂詞具有足夠的選擇性,則大多數輸出元組將被丟棄。

A diagram of a database query execution. The first step shows filtering the first input relation; the second step shows filtering the second input relation; and the third shows joining the results of filtering the two input relations, resulting in relatively few records.

圖 3 : 執行數據幀查詢的描述,在連接結果之前過濾兩個輸入關系。 如果可以對每個輸入關系獨立地計算謂詞,那么此查詢執行將產生與圖 2 中的查詢執行相同的結果,效率將大大提高。

一般來說,這種轉換可以提高性能。 例如,考慮一個查詢,該查詢連接兩個數據幀,然后過濾結果: 如果可能的話,在執行連接之前執行過濾器通常會更有效。 這樣做將減少連接的基數,消除最終不必要的比較,減少內存壓力,甚至可能減少連接中需要考慮的數據幀分區的數量。 然而,這種優化可能會產生違反直覺的后果: 如果向查詢計劃的根移動的操作僅在 CPU 上受支持,或者如果它生成的值的類型在 GPU 上不受支持,則主動查詢重新排序可能會對 GPU 的性能產生負面影響。 當這種情況發生時,在 CPU 上執行的查詢計劃的百分比可能比嚴格需要的要大。 您通常可以解決這個問題,并通過將查詢劃分為兩個分別執行的部分來提高性能,從而強制在查詢計劃的葉子附近僅 CPU 的操作僅在原始查詢的可加速部分在 GPU 上運行之后執行。

結論

在第三期文章中,我們詳細介紹了如何充分利用 Apache Spark 和 Apache RAPIDS 加速器 Spark 。 大多數團隊都會通過干凈地使用 Spark 的數據幀抽象來實現最大的好處。 但是,一些應用程序可能會受益于細微的調整,特別是考慮 RAPIDS 加速器的執行模型并避免不受支持的操作的保留語義的代碼更改。 未來幾期文章將討論數據科學發現工作流和機器學習生命周期的其余部分。

關于作者

William Benton在NVIDIA數據科學產品小組工作,他熱衷于使機器學習從業人員可以輕松地從先進的基礎架構中受益,并使組織可以管理機器學習系統。 在擔任過以前的職務時,他定義了與數據科學和機器學習有關的產品戰略和專業服務產品,領導了數據科學家和工程師團隊,并為與數據,機器學習和分布式系統有關的開源社區做出了貢獻。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 加速器
    +關注

    關注

    2

    文章

    796

    瀏覽量

    37840
  • NVIDIA
    +關注

    關注

    14

    文章

    4978

    瀏覽量

    102989
  • 機器學習
    +關注

    關注

    66

    文章

    8406

    瀏覽量

    132565
收藏 人收藏

    評論

    相關推薦

    spark為什么比mapreduce快?

    spark為什么比mapreduce快? 首先澄清幾個誤區: 1:兩者都是基于內存計算的,任何計算框架都肯定是基于內存的,所以網上說的spark是基于內存計算所以快,顯然是錯誤的 2;DAG計算模型
    的頭像 發表于 09-06 09:45 ?254次閱讀

    廣汽能源與泰國Spark EV簽訂合作框架協議

    近日,廣汽能源科技(泰國)有限公司與Spark EV Co.Ltd.宣布達成重要合作,雙方共同簽署了一項合作框架協議,旨在泰國境內全面布局并運營超級充電場站,為新能源汽車的普及與發展注入強勁動力。
    的頭像 發表于 07-19 17:08 ?860次閱讀

    spark運行的基本流程

    前言: 由于最近對spark的運行流程非常感興趣,所以閱讀了《Spark大數據處理:技術、應用與性能優化》一書。通過這本書的學習,了解了spark的核心技術、實際應用場景以及性能優化的方法。本文旨在
    的頭像 發表于 07-02 10:31 ?401次閱讀
    <b class='flag-5'>spark</b>運行的基本流程

    Spark基于DPU的Native引擎算子卸載方案

    1.背景介紹 Apache Spark(以下簡稱Spark)是一個開源的分布式計算框架,由UC Berkeley AMP Lab開發,可用于批處理、交互式查詢(Spark SQL)、實
    的頭像 發表于 06-28 17:12 ?560次閱讀
    <b class='flag-5'>Spark</b>基于DPU的Native引擎算子卸載方案

    關于Spark的從0實現30s內實時監控指標計算

    前言 說起Spark,大家就會自然而然地想到Flink,而且會不自覺地將這兩種主流的大數據實時處理技術進行比較。然后最終得出結論:Flink實時性大于Spark。 的確,Flink中的數據計算
    的頭像 發表于 06-14 15:52 ?439次閱讀

    淺談存內計算生態環境搭建以及軟件開發

    )適配到存內計算架構中。 (二)研究現狀 隨著存內計算硬件的發展,軟件開發社區正在尋找方法將這種新技術集成到傳統的軟件開發工作流程中。例如,流行的開源框架Apache Spark已經開始探索如何利用
    發表于 05-16 16:40

    云服務器apache如何配置解析php文件?

    在云服務器上配置Apache以解析PHP文件通常需要以下步驟: 1、安裝PHP:首先確保在服務器上安裝了PHP。你可以使用包管理工具(如apt、yum等)來安裝PHP。例如,在Ubuntu上,你可以
    的頭像 發表于 04-22 17:27 ?1014次閱讀

    如何利用DPU加速Spark大數據處理? | 總結篇

    SSD速度通過NVMe接口得到了大幅提升,并且網絡傳輸速率也進入了新的高度,但CPU主頻發展并未保持同等步調,3GHz左右的核心頻率已成為常態。 在當前背景下Apache Spark等大數據處理工具中,盡管存儲和網絡性能的提升極大地減少了數據讀取和傳輸的時間消耗,但
    的頭像 發表于 04-02 13:45 ?1046次閱讀
    如何<b class='flag-5'>利用</b>DPU<b class='flag-5'>加速</b><b class='flag-5'>Spark</b>大數據處理? | 總結篇

    Spark基于DPU Snappy壓縮算法的異構加速方案

    一、總體介紹 1.1 背景介紹 Apache Spark是專為大規模數據計算而設計的快速通用的計算引擎,是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些不同之處使
    的頭像 發表于 03-26 17:06 ?788次閱讀
    <b class='flag-5'>Spark</b>基于DPU Snappy壓縮算法的異構<b class='flag-5'>加速</b>方案

    RDMA技術在Apache Spark中的應用

    背景介紹 在當今數據驅動的時代,Apache?Spark已經成為了處理大規模數據集的首選框架。作為一個開源的分布式計算系統,Spark因其高效的大數據處理能力而在各行各業中廣受歡迎。無論是金融服務
    的頭像 發表于 03-25 18:13 ?1530次閱讀
    RDMA技術在<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>中的應用

    基于DPU和HADOS-RACE加速Spark 3.x

    背景簡介 Apache Spark(下文簡稱Spark)是一種開源集群計算引擎,支持批/流計算、SQL分析、機器學習、圖計算等計算范式,以其強大的容錯能力、可擴展性、函數式API、多語言支持(SQL
    的頭像 發表于 03-25 18:12 ?1345次閱讀
    基于DPU和HADOS-RACE<b class='flag-5'>加速</b><b class='flag-5'>Spark</b> 3.x

    Apache服務器和Nginx服務器

    Apache和Nginx都是常見的開源Web服務器軟件,它們用于處理HTTP請求并提供網站和應用程序的服務。下面是對Apache和Nginx的一些基本特點的比較: 一、Apache HTTP
    的頭像 發表于 01-22 16:48 ?559次閱讀

    Apache Doris聚合函數源碼解析

    筆者最近由于工作需要開始調研 Apache Doris,通過閱讀聚合函數代碼切入 Apache Doris 內核,同時也秉承著開源的精神,開發了 array_agg 函數并貢獻給社區。筆者通過這篇文章記錄下對源碼的一些理解,同時也方便后面的新人更快速地上手源碼開發。
    的頭像 發表于 01-16 09:52 ?1006次閱讀
    <b class='flag-5'>Apache</b> Doris聚合函數源碼解析

    米哈游大數據云原生實踐

    Spark 可以充分享有公共云的彈性資源、運維管控和存儲服務等,并且業界也涌現了不少 Spark on Kubernetes 的優秀實踐
    的頭像 發表于 01-09 10:41 ?582次閱讀
    米哈游大數據云原生<b class='flag-5'>實踐</b>

    什么是Apache日志?Apache日志分析工具介紹

    Apache Web 服務器在企業中廣泛用于托管其網站和 Web 應用程序,Apache 服務器生成的原始日志提供有關 Apache 服務器托管的網站如何處理用戶請求以及訪問您的網站時經常遇到的錯誤的重要信息。
    的頭像 發表于 01-04 10:09 ?832次閱讀
    主站蜘蛛池模板: 老湿影院色情a| 成人网视频在线观看免费| 一个人在线观看视频| 亚洲精品久久久久久偷窥| 午夜家庭影院| 亚洲视频黄| 战狼4在线观看完免费完整版| 在线中文字幕网站| 97色伦图片7778久久| fyeex性欧美人与曾| 超级最爽的乱淫片免费| 国产成人无码AV麻豆| 国产欧美另类久久久品| 九九热只有精品| 欧美黑人巨大xxxxx| 色偷偷男人| 亚洲欧美日韩在线码不卡| 中文字幕网站在线观看| YELLOW日本动漫高清免费| 国产精品JIZZ在线观看A片| 好男人资源免费观看1| 久久日本精品国产精品| 日本wwwxx爽69护士| 亚洲AV成人无码网天堂| 51无码人妻精品1国产| 成片在线看一区二区草莓| 国拍自产精品福利区| 免费国产麻豆传| 亚洲 日韩 国产 中文视频| 高h乱np甄宓| 精品99久久久久成人网站| 欧美高清videossexo| 真实伦 乱| 97视频免费在线观看| 99热这里精品| 国产午夜一级淫片| 日本乱子伦一区二区三区| 亚洲色欲国产免费视频| 动漫美女被到爽了流| 久久久久久久久免费视频 | 色婷婷亚洲五月|