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

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

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

FedJAX的庫結(jié)構(gòu)和內(nèi)容

Tensorflowers ? 來源:TensorFlow ? 作者:TensorFlow ? 2021-11-08 11:27 ? 次閱讀

聯(lián)邦學(xué)習(xí)是一種機(jī)器學(xué)習(xí)設(shè)置,允許多個(gè)客戶端(即移動(dòng)設(shè)備或者整個(gè)組織,取決于正在參與的任務(wù))在一個(gè)中央服務(wù)器的編排下,協(xié)同訓(xùn)練同一個(gè)模型,同時(shí)還能保持訓(xùn)練數(shù)據(jù)的離散性。例如,通過聯(lián)邦學(xué)習(xí),可以基于永遠(yuǎn)不會(huì)從移動(dòng)設(shè)備中消失的用戶數(shù)據(jù)訓(xùn)練虛擬鍵盤語言模型。

要實(shí)現(xiàn)這點(diǎn),聯(lián)邦學(xué)習(xí)算法首先需要初始化服務(wù)器中的模型,然后完成以下對于每一輪訓(xùn)練而言都非常關(guān)鍵的三步:

1. 服務(wù)器將模型發(fā)送到一組采樣客戶端。

2. 這些采樣客戶端在本地?cái)?shù)據(jù)中訓(xùn)練模型。

3. 訓(xùn)練完成之后,客戶端將更新后的模型發(fā)送到服務(wù)器,然后服務(wù)器將所有這些模型匯總在一起。

隨著人們對隱私和安全的日益注重,聯(lián)邦學(xué)習(xí)已成為一個(gè)尤為活躍的研究領(lǐng)域。對于這個(gè)日新月異的領(lǐng)域,能夠輕松將想法轉(zhuǎn)換為代碼、快速迭代,以及比較和復(fù)制現(xiàn)有基線的重要性不言而喻。

日新月異的領(lǐng)域

https://research.google/pubs/pub49232/

因此,我們很高興為大家介紹 FedJAX。FedJAX 是一個(gè)基于 JAX 的開源庫,適用于注重研究易用性的聯(lián)邦學(xué)習(xí)模擬。FedJAX 擁有適用于執(zhí)行聯(lián)邦算法、預(yù)打包的數(shù)據(jù)集、模型和算法以及高模擬速度的簡單基本模塊,旨在讓研究員能夠更快速、更容易地開發(fā)和評(píng)估聯(lián)邦算法。

FedJAX

https://github.com/google/fedjax

JAX

https://github.com/google/jax

在這篇文章中,我們將討論 FedJAX 的庫結(jié)構(gòu)和內(nèi)容。我們會(huì)證明,在 TPU 中,F(xiàn)edJAX 可通過 EMNIST 數(shù)據(jù)集的聯(lián)合平均,在幾分鐘內(nèi)就能訓(xùn)練完模型。而通過 Stack Overflow 數(shù)據(jù)集的標(biāo)準(zhǔn)超參數(shù) (Hyperparameter),則需要將近 1 小時(shí)。

EMNIST

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

聯(lián)合平均

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.fed_avg

Stack Overflow

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

庫結(jié)構(gòu)

FedJAX 注重易用性,因此僅引進(jìn)了少量新概念。使用 FedJAX 編寫的代碼與學(xué)術(shù)論文用于描述新穎算法的偽代碼類似,因此極易上手。除此之外,雖然 FedJAX 提供了聯(lián)邦學(xué)習(xí)的基本模塊,但用戶可以將其替換為最基本的實(shí)現(xiàn)(僅使用 NumPy 和 JAX),并且仍然可以將整體訓(xùn)練速度保持在一個(gè)合理的區(qū)間。

與學(xué)術(shù)論文用于描述新穎算法的偽代碼類似

https://github.com/google/fedjax/blob/main/README.md#quickstart

NumPy

https://numpy.org/

包含的數(shù)據(jù)集和模型

在當(dāng)前聯(lián)邦學(xué)習(xí)研究領(lǐng)域,存在各種各樣常用的數(shù)據(jù)集和模型,例如圖像識(shí)別 (Image recognition)、語言建模 (Language modeling) 等。越來越多這樣的數(shù)據(jù)集和模型無需安裝即可直接用于 FedJAX,因此用戶無需從頭開始編寫預(yù)處理數(shù)據(jù)集和模型。這不僅有利于對不同的聯(lián)邦算法進(jìn)行有效比較,還加速了新算法的開發(fā)。

目前,F(xiàn)edJAX 與以下數(shù)據(jù)集和示例模型一起打包:

EMNIST-62,一項(xiàng)字符識(shí)別任務(wù)

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

Shakespeare,一項(xiàng)下一字符預(yù)測任務(wù)

https://github.com/google/fedjax/blob/main/fedjax/datasets/shakespeare.py

Stack Overflow,一項(xiàng)下一字詞預(yù)測任務(wù)

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

除了以上標(biāo)準(zhǔn)設(shè)置,F(xiàn)edJAX 還提供用于創(chuàng)建新數(shù)據(jù)集和模型的工具,這些新數(shù)據(jù)集和模型可以與庫的其余內(nèi)容共同使用。

工具

https://fedjax.readthedocs.io/en/latest/fedjax.html#federated-data

此外,F(xiàn)edJAX 支持聯(lián)合平均的標(biāo)準(zhǔn)實(shí)現(xiàn),也支持用于在分散式示例上訓(xùn)練共享模型的其他聯(lián)邦算法,例如自適應(yīng)聯(lián)邦優(yōu)化器、不可知聯(lián)合平均以及 Mime,從而讓比較和評(píng)估現(xiàn)有算法變得更加簡單。

自適應(yīng)聯(lián)邦優(yōu)化器

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.fed_avg

不可知聯(lián)合平均

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.agnostic_fed_avg

Mime

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.mime

性能評(píng)估

我們在兩項(xiàng)任務(wù)上對自適應(yīng)聯(lián)合平均的標(biāo)準(zhǔn) FedJAX 實(shí)現(xiàn)進(jìn)行了基準(zhǔn)測試:圖像識(shí)別任務(wù)(測試聯(lián)邦 EMNIST-62 數(shù)據(jù)集)和下一字詞預(yù)測任務(wù)(測試 Stack Overflow 數(shù)據(jù)集)。聯(lián)邦 EMNIST-62 數(shù)據(jù)集較小,由 3400 名用戶和他們創(chuàng)建的示例(共 62 個(gè)拉丁字母數(shù)字字符)構(gòu)成;而 Stack Overflow 數(shù)據(jù)集較大,由數(shù)百萬問題和答案構(gòu)成(這些問題和答案來自于擁有成千上萬名用戶的 Stack Overflow 論壇)。

自適應(yīng)聯(lián)合平均

https://openreview.net/pdf?id=LkFG3lB13U5

聯(lián)邦 EMNIST-62 數(shù)據(jù)集

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

Stack Overflow 數(shù)據(jù)集

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

我們在專門用于機(jī)器學(xué)習(xí)的各種硬件上測量性能。對于聯(lián)邦 EMNIST-62,我們在 GPU (NVIDIA V100) 和 TPU(Google TPU v2 上的 1 個(gè) TensorCore)加速器上對單一模型進(jìn)行了 1500 輪訓(xùn)練(每輪 10 個(gè)客戶端)。

對于 Stack Overflow,我們在 GPU (NVIDIA V100)、單核 TPU(Google TPU v2 上 1 個(gè) TensorCore)及多核 TPU(Google TPU v2 上 8 個(gè) TensorCore)上對單一模型進(jìn)行了 1500 輪訓(xùn)練(每輪 50 個(gè)客戶端)。其中,在 GPU 上使用 jax.jit,在單核 TPU 上僅使用 jax.jit,而在多核 TPU 上使用 jax.pmap。在下方圖表中,我們記錄了每輪訓(xùn)練的平均完成時(shí)間、完整評(píng)估測試數(shù)據(jù)所需時(shí)間以及整體執(zhí)行時(shí)間(整體執(zhí)行包含訓(xùn)練和完整評(píng)估)。

通過標(biāo)準(zhǔn)超參數(shù)和 TPUs,聯(lián)邦 EMNIST-62 的整個(gè)實(shí)驗(yàn)可以在幾分鐘之內(nèi)完成,而 Stack Overflow.的實(shí)驗(yàn)需要 1 小時(shí)左右的時(shí)間。

我們還評(píng)估了隨著每輪客戶端數(shù)量增加之后的 Stack Overflow 平均每輪訓(xùn)練時(shí)長。通過比較圖表上 8 核 TPU 與單核 TPU 的平均每輪訓(xùn)練時(shí)長,我們很容易就能發(fā)現(xiàn),如果每輪參與的客戶端數(shù)量較多,則使用多核 TPU 能極大縮短運(yùn)行時(shí)間(對微分化的不公開學(xué)習(xí)等應(yīng)用來說非常有幫助)。

微分化的不公開學(xué)習(xí)

https://openreview.net/forum?id=BJ0hF1Z0b

結(jié)論和未來研究方向

在這篇文章中,我們介紹了 FedJAX 這種適用于研究、速度較快且簡單易用的聯(lián)邦學(xué)習(xí)模擬庫。我們希望 FedJAX 能推動(dòng)聯(lián)邦學(xué)習(xí)的深入研究,同時(shí)引起人們對于該領(lǐng)域的更多關(guān)注。未來,我們計(jì)劃繼續(xù)發(fā)展現(xiàn)有算法集、聚合機(jī)制、數(shù)據(jù)集和模型。

歡迎各位隨時(shí)查閱我們的教程筆記本,或者親自體驗(yàn) FedJAX!

教程筆記本

https://fedjax.readthedocs.io/en/latest/

親自體驗(yàn) FedJAX

https://github.com/google/fedjax/blob/main/examples

若想進(jìn)一步了解 FedJAX 及其與 Tensorflow Federated 等平臺(tái)的關(guān)系,請參閱我們的論文、README 或常見問題解答。

責(zé)任編輯:haq

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

    關(guān)注

    12

    文章

    9248

    瀏覽量

    85737
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8428

    瀏覽量

    132830

原文標(biāo)題:FedJAX:使用 JAX 進(jìn)行聯(lián)邦學(xué)習(xí)模擬

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    云數(shù)據(jù)是哪種數(shù)據(jù)類型?

    云數(shù)據(jù)是一種部署在虛擬計(jì)算環(huán)境中的數(shù)據(jù),它融合了云計(jì)算的彈性和可擴(kuò)展性,為用戶提供高效、靈活的數(shù)據(jù)服務(wù)。云數(shù)據(jù)主要分為兩大類:關(guān)系型數(shù)據(jù)
    的頭像 發(fā)表于 01-07 10:22 ?102次閱讀

    HAL和標(biāo)準(zhǔn)的區(qū)別 HAL與CMSIS的關(guān)系

    在嵌入式系統(tǒng)開發(fā)中,HAL(硬件抽象層)和標(biāo)準(zhǔn)是兩種常用的軟件,它們在功能和使用場景上有所不同。 1. 標(biāo)準(zhǔn) 標(biāo)準(zhǔn),通常指的是C語
    的頭像 發(fā)表于 12-02 14:02 ?996次閱讀

    如何快速入門HAL編程 HAL與裸機(jī)編程的比較

    。 選擇開發(fā)環(huán)境和工具 : 下載并安裝適用于目標(biāo)微控制器的IDE(如STM32CubeIDE)。 配置開發(fā)環(huán)境,包括編譯器、調(diào)試器等。 學(xué)習(xí)HAL文檔和教程 : 閱讀官方HAL文檔,了解HAL
    的頭像 發(fā)表于 12-02 11:39 ?369次閱讀

    支持外擴(kuò)sd卡功能的串口數(shù)據(jù)模塊

    往期文章介紹了LS10串口數(shù)據(jù)模塊的SQL數(shù)據(jù)庫存取功能,片內(nèi)容量測試如下: 容量測試,分享如下: 表格結(jié)構(gòu)(sn int primary key not null,id int,p1 int
    發(fā)表于 11-23 09:50

    AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別 AIGC的優(yōu)勢和挑戰(zhàn)

    、AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別 數(shù)據(jù)類型與處理 : AIGC主要面向非結(jié)構(gòu)化數(shù)據(jù)的生成,如自然語言文本、圖像、音頻、視頻等。這類數(shù)據(jù)規(guī)模更大,內(nèi)在結(jié)構(gòu)更復(fù)雜,對處理技術(shù)提出了更高要求。 傳統(tǒng)內(nèi)
    的頭像 發(fā)表于 11-22 16:04 ?386次閱讀

    多維表格數(shù)據(jù)Teable的適用場景?

    Teable多維表格數(shù)據(jù)是一款功能強(qiáng)大的云端數(shù)據(jù)和協(xié)作工具,結(jié)合了電子表格的靈活性和數(shù)據(jù)的強(qiáng)大功能,適用企業(yè)內(nèi)部項(xiàng)目管理 數(shù)據(jù)收集與整理 內(nèi)容管理與創(chuàng)意協(xié)作 客戶關(guān)系管理 項(xiàng)目跟
    的頭像 發(fā)表于 10-31 15:48 ?227次閱讀

    數(shù)據(jù)數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)碎片恢復(fù)SQLserver數(shù)據(jù)

    一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù),有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)包含兩個(gè)LDF文件。 存儲(chǔ)損壞,數(shù)據(jù)
    的頭像 發(fā)表于 10-31 13:21 ?280次閱讀
    數(shù)據(jù)<b class='flag-5'>庫</b>數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)<b class='flag-5'>庫</b>碎片恢復(fù)SQLserver數(shù)據(jù)<b class='flag-5'>庫</b>

    AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別

    AIGC : 主要面向非結(jié)構(gòu)化數(shù)據(jù)的生成,如自然語言文本、圖像、音頻、視頻等。 這類數(shù)據(jù)規(guī)模更大,內(nèi)在結(jié)構(gòu)更復(fù)雜,對處理技術(shù)提出了更高要求。 傳統(tǒng)內(nèi)容生成 : 主要處理結(jié)構(gòu)化數(shù)據(jù),如
    的頭像 發(fā)表于 10-25 15:13 ?496次閱讀

    labview選擇結(jié)構(gòu)和讀寫保存文件

    有一個(gè)選擇結(jié)構(gòu)有4個(gè)分支,其中一個(gè)分支為添加,想要在這個(gè)分支結(jié)構(gòu)中向多列表表框中添加內(nèi)容(已實(shí)現(xiàn))并將這些內(nèi)容輸出為txt文件然后與原本的txt文件
    發(fā)表于 10-22 14:50

    架構(gòu)師日記-從數(shù)據(jù)發(fā)展歷程到數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)探析

    一 數(shù)據(jù)發(fā)展史 起初,數(shù)據(jù)的管理方式是文件系統(tǒng),數(shù)據(jù)存儲(chǔ)在文件中,數(shù)據(jù)管理和維護(hù)都由程序員完成。后來發(fā)展出樹形結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)的數(shù)據(jù),但都存在著難以擴(kuò)展和維護(hù)的問題。直到七十年代,關(guān)
    的頭像 發(fā)表于 09-25 11:20 ?833次閱讀
    架構(gòu)師日記-從數(shù)據(jù)<b class='flag-5'>庫</b>發(fā)展歷程到數(shù)據(jù)<b class='flag-5'>結(jié)構(gòu)</b>設(shè)計(jì)探析

    一種常用嵌入式開發(fā)代碼

    使用開源協(xié)議:GPL-2.0varch簡介varch(we-architecture,意為我們的框架)是嵌入式C語言常用代碼模塊,包含了嵌入式中常用的算法庫,數(shù)據(jù)結(jié)構(gòu)(容器),解
    的頭像 發(fā)表于 09-04 08:06 ?516次閱讀
    一種常用嵌入式開發(fā)代碼<b class='flag-5'>庫</b>

    尾礦位移監(jiān)測設(shè)備的組成及其優(yōu)勢

    尾礦作為礦山廢棄物的主要儲(chǔ)存場所,其穩(wěn)定性受多種因素影響,包括地質(zhì)條件、降雨量、水位變化、壩體結(jié)構(gòu)等。一旦發(fā)生潰壩、泄漏等事故,不僅會(huì)造成巨大的經(jīng)濟(jì)損失,還可能引發(fā)嚴(yán)重的環(huán)境污染和人員傷亡,為
    的頭像 發(fā)表于 08-26 15:04 ?254次閱讀
    尾礦<b class='flag-5'>庫</b>位移監(jiān)測設(shè)備的組成及其優(yōu)勢

    擺脫自建的繁瑣,EDA元件轉(zhuǎn)cadence原理圖封裝實(shí)戰(zhàn)技巧

    擺脫自建的繁瑣,EDA元件轉(zhuǎn)cadence原理圖封裝實(shí)戰(zhàn)技巧
    的頭像 發(fā)表于 08-24 12:29 ?2978次閱讀
    擺脫自建<b class='flag-5'>庫</b>的繁瑣,EDA元件<b class='flag-5'>庫</b>轉(zhuǎn)cadence原理圖封裝<b class='flag-5'>庫</b>實(shí)戰(zhàn)技巧

    數(shù)據(jù)數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)的數(shù)據(jù)無法被讀取。 經(jīng)過數(shù)據(jù)數(shù)據(jù)恢復(fù)工程師的初步檢測,發(fā)現(xiàn)SQL Server數(shù)據(jù)文件無法被讀取的原因是底層File Record被截?cái)酁?,無法找到文件開頭,而且數(shù)據(jù)表
    的頭像 發(fā)表于 07-26 11:27 ?419次閱讀
    數(shù)據(jù)<b class='flag-5'>庫</b>數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)<b class='flag-5'>庫</b>底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

    博途用戶自定義的使用-的編輯及管理

    前面兩篇文章我們介紹了項(xiàng)目及全局。項(xiàng)目沒有單獨(dú)的存放路徑,它隨項(xiàng)目創(chuàng)建而創(chuàng)建,隨項(xiàng)目保存而保存。全局有單獨(dú)的存放路徑,可被保存、歸檔及解壓縮等。
    的頭像 發(fā)表于 01-24 10:45 ?1196次閱讀
    博途用戶自定義<b class='flag-5'>庫</b>的使用-<b class='flag-5'>庫</b>的編輯及管理