日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Apache Spark和NVIDIA GPU加速深度學(xué)習(xí)

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-27 09:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著人們對(duì)深度學(xué)習(xí)( deep learning , DL )興趣的日益濃厚,越來越多的用戶在生產(chǎn)環(huán)境中使用 DL 。由于 DL 需要強(qiáng)大的計(jì)算能力,開發(fā)人員正在利用 gpu 來完成他們的訓(xùn)練和推理工作。

pYYBAGJoomiALHkfAACMGzsbajs051.png

最近,為了更好地統(tǒng)一 Spark 上的 DL 和數(shù)據(jù)處理,作為 Apache Spark 的一項(xiàng)重大舉措的一部分, GPU 成為 Apache Spark 3.0 中的一種可調(diào)度資源。 Spark 將這些資源請(qǐng)求傳遞給底層集群管理器。因?yàn)檫@允許您大規(guī)模地運(yùn)行分布式推理,所以它可以幫助加速大數(shù)據(jù)管道以利用 DL 應(yīng)用程序。

在 Apache Spark 3. 0 之前,使用 gpu 是很困難的。您必須手動(dòng)將 GPU 設(shè)備分配給 Spark 作業(yè),并對(duì)每個(gè)執(zhí)行器或任務(wù)的所有配置進(jìn)行硬編碼,以便在一臺(tái)機(jī)器上使用不同的 GPU 。因?yàn)?apachehadoop3 。 1yarn 集群管理器允許不同機(jī)器之間的 GPU 協(xié)調(diào), Apache Spark 現(xiàn)在可以與它一起工作,幫助將設(shè)備安排傳遞給不同的任務(wù)。提交帶有 GPU 資源配置發(fā)現(xiàn)腳本的應(yīng)用程序后, Spark 將處理任務(wù)之間如何共享 GPU 的分配和協(xié)調(diào)。

在本教程中,我們將演示如何創(chuàng)建 GPU 機(jī)器集群,并使用 Apache Spark 和 Amazon EMR 上的 深層 Java 庫(kù)( DJL ) 來利用 Scala 中的大規(guī)模圖像分類。 DJL 現(xiàn)在提供了一個(gè)基于 GPU 的深入學(xué)習(xí) Java 包,該包被設(shè)計(jì)成可以在 Spark 中順利工作。

如果您對(duì) Scala 和 Java 感興趣,或者正在尋找將 Java 中的 DL 集成到大數(shù)據(jù)管道中的解決方案, DJL 提供了一個(gè)可行的解決方案。由于 Python 是 DL 最常用的語(yǔ)言,而 Java 是企業(yè)開發(fā)人員和數(shù)據(jù)工程師最流行的語(yǔ)言, DJL 的目標(biāo)是深入學(xué)習(xí), Java 開發(fā)人員可以使用熟悉的概念和直觀的 API 訪問的開源工具。 DJL 是建立在現(xiàn)代深度學(xué)習(xí)框架( TensorFlow 、 PyTorch 、 Apache MXNet 等)之上的。您可以輕松地使用 DJL 來訓(xùn)練您的模型,或者從各種引擎部署您喜愛的模型,而無需進(jìn)行任何額外的轉(zhuǎn)換。

設(shè)置 Spark 應(yīng)用程序

首先,導(dǎo)入 Spark 依賴項(xiàng)。 Spark SQL 和 ML 庫(kù)用于存儲(chǔ)和處理映像, Spark 依賴項(xiàng)僅在編譯時(shí)使用,并且由于在運(yùn)行時(shí)提供,因此在打包時(shí)被排除在外。當(dāng)所有東西都打包好后,。 jar 任務(wù)將它們排除在外。

configurations {
    exclusion
}
dependencies {
    implementation "org.apache.spark:spark-sql_2.12:3.0.1"
    implementation "org.apache.spark:spark-mllib_2.12:3.0.1"
    implementation "org.apache.hadoop:hadoop-hdfs:2.7.4"

    exclusion "org.apache.spark:spark-sql_2.12:3.0.1"
    exclusion "org.apache.spark:spark-mllib_2.12:3.0.1"
    exclusion "org.apache.hadoop:hadoop-hdfs:2.7.4"}
}
jar {
    from {
        (configurations.runtimeClasspath - configurations.exclusion).collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
}

接下來,導(dǎo)入與 DJL 相關(guān)的依賴項(xiàng)。您使用 DJL 和 PyTorch 包。它們提供了 DJL 的核心特性,并加載了一個(gè) DL 引擎來運(yùn)行以進(jìn)行推斷。此外,您還可以使用 pytorch-native-cu101 在具有 CUDA 10 。 1 的 GPU 上運(yùn)行。

    implementation platform("ai.djl:bom:0.8.0")
    implementation "ai.djl:api"
    runtimeOnly "ai.djl.pytorch:pytorch-model-zoo"
    runtimeOnly "ai.djl.pytorch:pytorch-native-cu101::linux-x86_64"

加載模型

要在 DJL 中加載模型,請(qǐng)?zhí)峁┏休d模型的 URL ( file ://, hdfs ://, s3 ://, https ://)。從該 URL 下載并導(dǎo)入模型。 DJL 還提供了一個(gè)強(qiáng)大的動(dòng)物園模型。 zoo 模型允許您管理預(yù)先訓(xùn)練的模型,并在一行中加載它們。內(nèi)置的動(dòng)物園模型目前支持 70 多個(gè)預(yù)先訓(xùn)練和準(zhǔn)備使用的模型,這些模型來自 GluonCV 、 HuggingFace 、 TorchHub 和 Keras 。

def loadModel(device : Device): ZooModel[Row, Classifications] = {
    val modelUrl = "https://alpha-djl-demos.s3.amazonaws.com/model/djl-blockrunner/pytorch_resnet18.zip?model_name=traced_resnet18"
    val criteria = Criteria.builder
      .setTypes(classOf[Row], classOf[Classifications])
      .optModelUrls(modelUrl)
      .optTranslator(new MyTranslator())
      .optProgress(new ProgressBar)
      .optDevice(device)
      .build()
     ModelZoo.loadModel(criteria)
}

這里的輸入類型是 Spark SQL 中的 Row 。輸出類型是分類結(jié)果。 MyTranslator 函數(shù)執(zhí)行預(yù)處理和后處理工作。加載的模型是來自 torchvision 的預(yù)訓(xùn)練 PyTorch ResNet18 模型。

主要邏輯

在下面的代碼示例中, downloadImages 函數(shù)下載演示圖像并將其存儲(chǔ)在 Hadoop 文件系統(tǒng)( hdfs )。接下來, spark.read.format(“image”) 函數(shù)使用 Spark 圖像數(shù)據(jù)源 將圖像文件從 HDFS 加載到 Spark DataFrame 中。在此步驟之后, mapPartition 獲取 GPU 信息。如代碼示例所示, TaskContext.resources()(“gpu”) 函數(shù)存儲(chǔ)為此分區(qū)分配的 GPU 。這可確保單個(gè)設(shè)備上的所有 GPU 都得到正確使用。將模型加載到指定的 GPU 后, predictor.predict(row) 返回 Spark DataFrame 分區(qū)中圖像(行)的分類。

def main(args: Array[String]) {

    // download images
    val imagePath = downloadImages(new Path("hdfs:///images"))

    // Spark configuration
    val spark = SparkSession.builder()
      .appName("Image Classification")
      .config(new SparkConf())
      .getOrCreate()
    val df = spark.read.format("image").option("dropInvalid", true).load(imagePath)
    val result = df.select(col("image.*")).mapPartitions(partition => {
      val context = TaskContext.get()
      val gpu = context.resources()("gpu").addresses(0)
      val model = loadModel(Device.gpu(gpu.toInt))
      val predictor = model.newPredictor()
      partition.map(row => {
        predictor.predict(row).toString
      })
    })(Encoders.STRING)
    println(result.collect().mkString("
"))
}

把它包起來

運(yùn)行 。/gradlew jar 將所有內(nèi)容捆綁到一個(gè) jar 中,并在 Spark 集群中運(yùn)行。

使用多個(gè) GPU 設(shè)置 Spark 群集

由于 Amazon emr6 。 2 。 0 的發(fā)布, Spark 3 。 0 在所有 GPU 實(shí)例中都可用。

要設(shè)置 Spark 群集,請(qǐng)使用 AWS CLI 創(chuàng)建一個(gè)包含三個(gè)實(shí)例的 GPU 群集。要成功運(yùn)行該命令,必須將 myKey 更改為 EC2 密鑰名稱。如果預(yù)先配置了 --region 選項(xiàng),也可以將其刪除。

aws emr create-cluster \
    --name "Spark cluster" \
    --release-label emr-6.2.0 \
    --region us-east-1 \
    --ebs-root-volume-size 50 \
    --applications Name=Hadoop Name=Spark \
    --ec2-attributes KeyName=myKey \
    --instance-type g3s.xlarge \
    --instance-count 3 \
    --use-default-roles \
    --configurations https://raw.githubusercontent.com/aws-samples/djl-demo/master/aws/emr-distributed-inference/image-classification-gpu/configurations.json 

您可以從 AWS 中提供的各種 GPU 實(shí)例中進(jìn)行選擇。此示例使用 g3s.xlarge 實(shí)例類型進(jìn)行測(cè)試目的群集設(shè)置的總運(yùn)行時(shí)間約為 10 – 15 分鐘。

執(zhí)行 Spark 作業(yè)

您可以在 EMR 控制臺(tái)上或從命令行運(yùn)行此駐車作業(yè)。

下面的命令告訴 Spark 運(yùn)行一個(gè) Yarn 集群,并設(shè)置一個(gè)腳本來查找不同設(shè)備上的 gpu 。每個(gè)任務(wù)的 GPU 數(shù)量設(shè)置為 0 。 5 ,這意味著兩個(gè)任務(wù)共享一個(gè) GPU 。您可能還需要相應(yīng)地設(shè)置 CPU 編號(hào),以確保它們匹配。例如,如果您有一個(gè) 8 核 CPU ,并且將 spark.task.cpus 設(shè)置為 2 ,這意味著四個(gè)任務(wù)可以在一臺(tái)機(jī)器上并行運(yùn)行。要獲得最佳性能,請(qǐng)將 spark.task.resource.gpu.amount 設(shè)置為 0 。 25 。這允許四個(gè)任務(wù)共享同一個(gè) GPU 。這有助于最大限度地提高性能,因?yàn)?GPU 和 CPU 中的所有核心都已使用。如果沒有平衡的設(shè)置,一些內(nèi)核處于空閑狀態(tài),這會(huì)浪費(fèi)資源。

spark-submit \
    --master yarn \
    --conf spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh \
    --conf spark.worker.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh \
    --conf spark.task.resource.gpu.amount="0.5" \
    --conf spark.task.cpus=2 \
    --conf spark.executor.resource.gpu.amount=1 \
    --conf spark.worker.resource.gpu.amount=1 \
    --class com.examples.ImageClassificationExample \
    build/libs/image-classification-gpu-1.0-SNAPSHOT.jar

這個(gè)腳本大約需要 4-6 分鐘才能完成,您將得到一個(gè)打印輸出的推斷結(jié)果作為輸出。

摘要

在本教程中,您從頭開始構(gòu)建包,并將工作提交到 GPU 集群以執(zhí)行推理任務(wù)。嘗試對(duì)自己的應(yīng)用程序使用相同的設(shè)置。

關(guān)于作者

Qing Lan 是 AWS 深度學(xué)習(xí)工具包團(tuán)隊(duì)的 SDE 。他是 DJL 的合著者之一 (djl 。 ai 公司 ) 以及 apachemxnet 的 PPMC 成員。 2017 年畢業(yè)于哥倫比亞大學(xué),獲計(jì)算機(jī)工程碩士學(xué)位, 2017 年暑期實(shí)習(xí)。他專注于分布式深度學(xué)習(xí)訓(xùn)練和推理領(lǐng)域。

Kong Zhao 是 NVIDIA 的主要解決方案架構(gòu)師。他提供技術(shù)思想領(lǐng)導(dǎo)和架構(gòu)指導(dǎo)。他為 NVIDIA 和 AWS 客戶進(jìn)行 PoC ,通過在云中開發(fā)、優(yōu)化和部署 GPU 加速解決方案來滿足他們的 AI 和 HPC 需求。他關(guān)注的核心領(lǐng)域是 GPU 相關(guān)的云架構(gòu)、 HPC 、機(jī)器學(xué)習(xí)和分析。此前, Kong 曾擔(dān)任 AWS 的高級(jí)解決方案架構(gòu)師、云交換的 atEquinix 架構(gòu)師以及 Cisco 的產(chǎn)品經(jīng)理。

Carol McDonald 是一位產(chǎn)品營(yíng)銷經(jīng)理,專注于 Spark 和數(shù)據(jù)科學(xué)。 Carol 在很多方面都有經(jīng)驗(yàn),包括技術(shù)營(yíng)銷、軟件架構(gòu)和開發(fā)、培訓(xùn)、技術(shù)宣傳和開發(fā)人員外展。 Carol 編寫行業(yè)架構(gòu)、最佳實(shí)踐、模式、原型、教程、演示、博客文章、白皮書和電子書。她走遍世界各地,做演講和動(dòng)手實(shí)驗(yàn);在銀行、醫(yī)療保險(xiǎn)和電信行業(yè)開發(fā)了復(fù)雜的、關(guān)鍵任務(wù)的應(yīng)用程序??_爾擁有田納西大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位和范德比爾特大學(xué)地質(zhì)學(xué)學(xué)士學(xué)位??_爾精通英語(yǔ)、法語(yǔ)和德語(yǔ)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3012

    瀏覽量

    116872
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2481

    瀏覽量

    67060
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90327
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Oracle和NVIDIA合作加速向量搜索和企業(yè)數(shù)據(jù)處理

    Oracle 和 NVIDIA 正在與客戶合作,將 GPU 加速的向量索引構(gòu)建應(yīng)用于實(shí)際工作負(fù)載。Oracle Private AI Services Container 初期支持 CPU 執(zhí)行,現(xiàn)
    的頭像 發(fā)表于 03-23 15:26 ?454次閱讀

    首屆中國(guó)NVIDIA DGX Spark黑客松大賽開啟報(bào)名

    倒計(jì)時(shí)啟動(dòng)!首屆中國(guó) NVIDIA DGX Spark 黑客松(Hackathon)將于 3 月 13 日 - 3 月 28 日正式開啟報(bào)名!本屆賽事以“算力破局、AI 落地”為核心導(dǎo)向,依托
    的頭像 發(fā)表于 03-14 16:39 ?2744次閱讀

    NVIDIA DGX Spark桌面級(jí)AI超級(jí)計(jì)算機(jī)助力開發(fā)者構(gòu)建AI模型

    開源 AI 正在加速各行各業(yè)的創(chuàng)新,NVIDIA DGX Spark 將幫助開發(fā)者將創(chuàng)新轉(zhuǎn)化為影響力。
    的頭像 發(fā)表于 01-09 09:49 ?753次閱讀

    NVIDIA RTX PRO 5000 Blackwell GPU深度評(píng)測(cè)

    NVIDIA RTX PRO 5000 Blackwell 是 NVIDIA RTX 5000 Ada Generation 的升級(jí)迭代產(chǎn)品,其各項(xiàng)核心指標(biāo)均針對(duì) GPU 加速工作流的
    的頭像 發(fā)表于 01-06 09:51 ?4307次閱讀
    <b class='flag-5'>NVIDIA</b> RTX PRO 5000 Blackwell <b class='flag-5'>GPU</b>的<b class='flag-5'>深度</b>評(píng)測(cè)

    NVIDIA DGX Spark系統(tǒng)恢復(fù)過程與步驟

    在使用 NVIDIA DGX Spark 的過程中,可能會(huì)出現(xiàn)配置故障,而導(dǎo)致開發(fā)中斷的問題,本篇教程將帶大家了解如何一步步完成系統(tǒng)恢復(fù)。
    的頭像 發(fā)表于 11-28 09:46 ?5997次閱讀
    <b class='flag-5'>NVIDIA</b> DGX <b class='flag-5'>Spark</b>系統(tǒng)恢復(fù)過程與步驟

    NVIDIA RTX PRO 2000 Blackwell GPU性能測(cè)試

    越來越多的應(yīng)用正在使用 AI 加速,而無論工作站的大小或形態(tài)如何,都有越來越多的用戶需要 AI 性能。NVIDIA RTX PRO 2000 Blackwell 是全新 NVIDIA
    的頭像 發(fā)表于 11-28 09:39 ?7120次閱讀
    <b class='flag-5'>NVIDIA</b> RTX PRO 2000 Blackwell <b class='flag-5'>GPU</b>性能測(cè)試

    NVIDIA DGX Spark助力構(gòu)建自己的AI模型

    2025 年 1 月 6 日,NVIDIA 正式宣布其 Project DIGITS 項(xiàng)目,并于 3 月 18 日更名為 NVIDIA DGX Spark,進(jìn)一步公布了產(chǎn)品細(xì)節(jié)。DGX Spa
    的頭像 發(fā)表于 11-21 09:25 ?1590次閱讀
    <b class='flag-5'>NVIDIA</b> DGX <b class='flag-5'>Spark</b>助力構(gòu)建自己的AI模型

    NVIDIA DGX Spark平臺(tái)上對(duì)NVIDIA ConnectX-7 200G網(wǎng)卡配置教程

    NVIDIA DGX Spark 平臺(tái)上對(duì) NVIDIA ConnectX-7 200G 網(wǎng)卡進(jìn)行配置時(shí),會(huì)遇到“4 個(gè)邏輯端口”現(xiàn)象。理解背后的真相是后續(xù)所有配置的基礎(chǔ)。本文將從此現(xiàn)象入手,逐步解析其原理,并提供從基礎(chǔ)配置
    的頭像 發(fā)表于 11-21 09:19 ?6126次閱讀
    在<b class='flag-5'>NVIDIA</b> DGX <b class='flag-5'>Spark</b>平臺(tái)上對(duì)<b class='flag-5'>NVIDIA</b> ConnectX-7 200G網(wǎng)卡配置教程

    NVIDIA DGX Spark快速入門指南

    NVIDIA DGX Spark 已正式向 AI 開發(fā)者交付,對(duì)于剛?cè)胧值娜?DGX Spark,該如何進(jìn)行初始化設(shè)置?本篇文章將引導(dǎo)您完成 DGX Spark 首次設(shè)置。在初始設(shè)置
    的頭像 發(fā)表于 11-17 14:11 ?7168次閱讀
    <b class='flag-5'>NVIDIA</b> DGX <b class='flag-5'>Spark</b>快速入門指南

    NVIDIA宣布開源Aerial軟件

    NVIDIA 開源其 Aerial 軟件,并將 NVIDIA Sionna 研究套件和 Aerial 測(cè)試平臺(tái)引入 NVIDIA DGX Spark 平臺(tái),為研究人員提供強(qiáng)大的工具和便
    的頭像 發(fā)表于 11-03 15:14 ?1209次閱讀

    NVIDIA DGX Spark新一代AI超級(jí)計(jì)算機(jī)正式交付

    NVIDIA 創(chuàng)始人兼首席執(zhí)行官黃仁勛在 SpaceX 向埃隆·馬斯克交付 DGX Spark
    的頭像 發(fā)表于 10-21 10:41 ?1552次閱讀

    NVIDIA DGX Spark桌面AI計(jì)算機(jī)開啟預(yù)訂

    DGX Spark 現(xiàn)已開啟預(yù)訂!麗臺(tái)科技作為 NVIDIA 授權(quán)分銷商,提供從產(chǎn)品到服務(wù)的一站式解決方案,助力輕松部署桌面 AI 計(jì)算機(jī)。
    的頭像 發(fā)表于 09-23 17:20 ?1574次閱讀
    <b class='flag-5'>NVIDIA</b> DGX <b class='flag-5'>Spark</b>桌面AI計(jì)算機(jī)開啟預(yù)訂

    NVIDIA桌面GPU系列擴(kuò)展新產(chǎn)品

    NVIDIA 桌面 GPU 系列擴(kuò)展,推出 NVIDIA RTX PRO 4000 SFF Edition GPU 和 RTX PRO 2000 Blackwell
    的頭像 發(fā)表于 08-18 11:50 ?1676次閱讀

    使用NVIDIA GPU加速Apache Spark中Parquet數(shù)據(jù)掃描

    的方式組織數(shù)據(jù),這使得 Parquet 在查詢時(shí)僅讀取所需的列,而無需掃描整行數(shù)據(jù),即可實(shí)現(xiàn)高性能的查詢和分析。高效的數(shù)據(jù)布局使 Parquet 在現(xiàn)代分析生態(tài)系統(tǒng)中成為了受歡迎的選擇,尤其是在 Apache Spark 工作負(fù)載中。
    的頭像 發(fā)表于 07-23 10:52 ?1246次閱讀
    使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b><b class='flag-5'>加速</b><b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>中Parquet數(shù)據(jù)掃描

    NVIDIA NVLink 深度解析

    引言 NVIDIA NVLink 是一種關(guān)鍵的高速互連技術(shù),專為加速計(jì)算而設(shè)計(jì),尤其是在多 GPU 系統(tǒng)以及 GPU 和支持 CPU 之間 ^1^。NVLink 的出現(xiàn)標(biāo)志著傳統(tǒng)互連瓶
    的頭像 發(fā)表于 05-06 18:14 ?5812次閱讀
    思南县| 当阳市| 惠水县| 丹阳市| 凤山县| 定远县| 东海县| 佛山市| 朝阳区| 淮阳县| 沂水县| 扶余县| 桃园市| 莱西市| 耒阳市| 额尔古纳市| 黑山县| 普兰县| 甘孜| 清苑县| 翁牛特旗| 武平县| 修武县| 顺昌县| 时尚| 福泉市| 鹤峰县| 福清市| 伊宁市| 肇源县| 大同市| 锡林浩特市| 乡宁县| 贡嘎县| 陈巴尔虎旗| 鲜城| 黔西县| 罗源县| 青神县| 腾冲县| 原平市|