最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

在英特爾 CPU 上微調(diào) Stable Diffusion 模型

2023-07-19 22:57 作者:HuggingFace  | 我要投稿

擴(kuò)散模型能夠根據(jù)文本提示生成逼真的圖像,這種能力促進(jìn)了生成式人工智能的普及。人們已經(jīng)開(kāi)始把這些模型用在包括數(shù)據(jù)合成及內(nèi)容創(chuàng)建在內(nèi)的多個(gè)應(yīng)用領(lǐng)域。 Hugging Face Hub 包含超過(guò) 5 千個(gè)預(yù)訓(xùn)練的文生圖 模型。這些模型與 Diffusers 庫(kù) 結(jié)合使用,使得構(gòu)建圖像生成工作流或者對(duì)不同的圖像生成工作流進(jìn)行實(shí)驗(yàn)變得無(wú)比簡(jiǎn)單。

和 transformer 模型一樣,你可以微調(diào)擴(kuò)散模型以讓它們生成更符合特定業(yè)務(wù)需求的內(nèi)容。起初,大家只能用 GPU 進(jìn)行微調(diào),但情況正在發(fā)生變化!幾個(gè)月前,英特爾 推出 了代號(hào)為 Sapphire Rapids 的第四代至強(qiáng) CPU。Sapphire Rapids 中包含了英特爾先進(jìn)矩陣擴(kuò)展 (Advanced Matrix eXtension,AMX),它是一種用于深度學(xué)習(xí)工作負(fù)載的新型硬件加速器。在之前的幾篇博文中,我們已經(jīng)展示了 AMX 的優(yōu)勢(shì): 微調(diào) NLP transformers 模型、對(duì) NLP transformers 模型進(jìn)行推理,以及 對(duì) Stable Diffusion 模型進(jìn)行推理。

本文將展示如何在英特爾第四代至強(qiáng) CPU 集群上微調(diào) Stable Diffusion 模型。我們用于微調(diào)的是 文本逆向 (Textual Inversion) 技術(shù),該技術(shù)僅需少量訓(xùn)練樣本即可對(duì)模型進(jìn)行有效微調(diào)。在本文中,我們僅用 5 個(gè)樣本就行了!

我們開(kāi)始吧。

配置集群

英特爾 的小伙伴給我們提供了 4 臺(tái)托管在 英特爾開(kāi)發(fā)者云 (Intel Developer Cloud,IDC) 上的服務(wù)器。IDC 作為一個(gè)云服務(wù)平臺(tái),提供了一個(gè)英特爾深度優(yōu)化的、集成了最新英特爾處理器及 最優(yōu)性能軟件棧 的部署環(huán)境,用戶可以很容易地在此環(huán)境上開(kāi)發(fā)、運(yùn)行其工作負(fù)載。

我們得到的每臺(tái)服務(wù)器均配備兩顆英特爾第四代至強(qiáng) CPU,每顆 CPU 有 56 個(gè)物理核和 112 個(gè)線程。以下是其 lscpu 的輸出:

我們把四臺(tái)服務(wù)器的 IP 地址寫(xiě)到 nodefile 文件中,其中,第一行是主服務(wù)器。

分布式訓(xùn)練要求主節(jié)點(diǎn)和其他節(jié)點(diǎn)之間實(shí)現(xiàn)無(wú)密碼 ssh 通信。如果你對(duì)此不是很熟悉,可以參考這篇 文章,并跟著它一步步設(shè)置好無(wú)密碼 ssh 。

接下來(lái),我們?cè)诿總€(gè)節(jié)點(diǎn)上搭建運(yùn)行環(huán)境并安裝所需軟件。我們特別安裝了兩個(gè)英特爾優(yōu)化庫(kù): 用于管理分布式通信的 oneCCL 以及 Intel Extension for PyTorch (IPEX),IPEX 中包含了能充分利用 Sapphire Rapids 中的硬件加速功能的軟件優(yōu)化。我們還安裝了 libtcmalloc ,它是一個(gè)高性能內(nèi)存分配庫(kù),及其軟件依賴項(xiàng) gperftools

下面,我們?cè)诿總€(gè)節(jié)點(diǎn)上克隆 diffusers 代碼庫(kù)并進(jìn)行源碼安裝。

緊接著,我們需要使用 IPEX 對(duì) diffusers/examples/textual_inversion 中的微調(diào)腳本進(jìn)行一些優(yōu)化,以將 IPEX 對(duì)推理模型的優(yōu)化包含在內(nèi) (譯者注: diffusers 的設(shè)計(jì)中,其 pipeline 與 transformers 的 pipeline 雖然名稱相似,但無(wú)繼承關(guān)系,所以其子模型的推理優(yōu)化無(wú)法在庫(kù)內(nèi)完成,只能在腳本代碼內(nèi)完成。而 Clip-Text 模型的微調(diào)由于使用了 accelerate ,所以其優(yōu)化可由 accelerate 完成)。我們導(dǎo)入 IPEX 并對(duì) U-Net 和變分自編碼器 (VAE) 模型進(jìn)行推理優(yōu)化。最后,不要忘了這個(gè)改動(dòng)對(duì)每個(gè)節(jié)點(diǎn)的代碼都要做。

最后一步是下載 訓(xùn)練圖像。一般我們會(huì)使用共享 NFS 文件夾,但為了簡(jiǎn)單起見(jiàn),這里我們選擇在每個(gè)節(jié)點(diǎn)上下載圖像。請(qǐng)確保訓(xùn)練圖像的目錄在所有節(jié)點(diǎn)上的路徑都相同 ( /home/devcloud/dicoo )。

下面展示了我們使用的訓(xùn)練圖像:

至此,系統(tǒng)配置就完成了。下面,我們開(kāi)始配置訓(xùn)練任務(wù)。

配置微調(diào)環(huán)境

使用 accelerate 庫(kù)讓分布式訓(xùn)練更容易。我們需要在每個(gè)節(jié)點(diǎn)上運(yùn)行 acclerate config 并回答一些簡(jiǎn)單問(wèn)題。

下面是主節(jié)點(diǎn)的屏幕截圖。在其他節(jié)點(diǎn)上,你需要將 rank 設(shè)置為 1、2 和 3,其他答案保持不變即可。

最后,我們需要在主節(jié)點(diǎn)上設(shè)置一些環(huán)境變量。微調(diào)任務(wù)啟動(dòng)時(shí),這些環(huán)境變量會(huì)傳播到其他節(jié)點(diǎn)。第一行設(shè)置連接到所有節(jié)點(diǎn)運(yùn)行的本地網(wǎng)絡(luò)的網(wǎng)絡(luò)接口的名稱。你可能需要使用 ifconfig 來(lái)設(shè)置適合你的網(wǎng)絡(luò)接口名稱。

好了,現(xiàn)在我們可以啟動(dòng)微調(diào)了。

微調(diào)模型

我們使用 mpirun 啟動(dòng)微調(diào),它會(huì)自動(dòng)在 nodefile 中列出的節(jié)點(diǎn)之間建立分布式通信。這里,我們運(yùn)行 16 個(gè)進(jìn)程 ( -n ),其中每個(gè)節(jié)點(diǎn)運(yùn)行 4 個(gè)進(jìn)程 ( -ppn )。 Accelerate 庫(kù)會(huì)自動(dòng)在所有進(jìn)程間建立分布式的訓(xùn)練。

我們啟動(dòng)下面的命令訓(xùn)練 200 步,僅需約 5 分鐘。

下面的截圖顯示了訓(xùn)練過(guò)程中集群的狀態(tài):

排障

分布式訓(xùn)練有時(shí)候會(huì)出現(xiàn)一些棘手的問(wèn)題,尤其是當(dāng)你新涉足于此。單節(jié)點(diǎn)上的小的配置錯(cuò)誤是最可能出現(xiàn)的問(wèn)題: 缺少依賴項(xiàng)、圖像存儲(chǔ)在不同位置等。

你可以登錄各個(gè)節(jié)點(diǎn)并在本地進(jìn)行訓(xùn)練來(lái)快速定位問(wèn)題。首先,設(shè)置與主節(jié)點(diǎn)相同的環(huán)境,然后運(yùn)行:

如果訓(xùn)練成功啟動(dòng),就停止它并移至下一個(gè)節(jié)點(diǎn)。如果在所有節(jié)點(diǎn)上訓(xùn)練都成功啟動(dòng)了,請(qǐng)返回主節(jié)點(diǎn)并仔細(xì)檢查 nodefile 、環(huán)境以及 mpirun 命令是否有問(wèn)題。不用擔(dān)心,最終你會(huì)找到問(wèn)題的 :)。

使用微調(diào)模型生成圖像

經(jīng)過(guò) 5 分鐘的訓(xùn)練,訓(xùn)得的模型就保存在本地了,我們可以直接用 diffuserspipeline 加載該模型并進(jìn)行圖像生成。但這里,我們要使用 Optimum Intel 和 OpenVINO 以進(jìn)一步對(duì)模型進(jìn)行推理優(yōu)化。正如 上一篇文章 中所討論的,優(yōu)化后,僅用單顆 CPU 就能讓你在不到 5 秒的時(shí)間內(nèi)生成一幅圖像!

我們用下面的代碼來(lái)加載模型,并對(duì)其針對(duì)固定輸出形狀進(jìn)行優(yōu)化,最后保存優(yōu)化后的模型:

然后,我們加載優(yōu)化后的模型,生成 5 張不同的圖像并保存下來(lái):

下面是其生成的圖像。令人驚艷的是,模型只需要五張圖像就知道 dicoo 是戴眼鏡的!

你還可以對(duì)模型進(jìn)行更多的微調(diào),以期獲得更好的效果。下面是一個(gè)經(jīng) 3 千步 (大約一個(gè)小時(shí)) 微調(diào)而得的模型生成的圖像,效果相當(dāng)不錯(cuò)。

總結(jié)

得益于 Hugging Face 和英特爾的深度合作,現(xiàn)在大家可以用至強(qiáng) CPU 服務(wù)器來(lái)生成滿足各自業(yè)務(wù)需求的高質(zhì)量圖像。而 CPU 通常比 GPU 等專用硬件更便宜且更易得,同時(shí)至強(qiáng) CPU 還是個(gè)多面手,它可以輕松地用于其他生產(chǎn)任務(wù),如 Web 服務(wù)器、數(shù)據(jù)庫(kù)等等不一而足。因此,CPU 理所當(dāng)然地成為了 IT 基礎(chǔ)設(shè)施的一個(gè)功能全面且靈活的備選方案。

以下資源可供入門(mén),你可按需使用:

  • Diffusers 文檔

  • Optimum Intel 文檔

  • GitHub 上的 英特爾 IPEX

  • 英特爾和 Hugging Face 的 開(kāi)發(fā)者資源

  • IDC、AWS 、GCP 以及 阿里云 上的第四代至強(qiáng) CPU 實(shí)例

如果你有任何疑問(wèn)或反饋,歡迎到 Hugging Face 論壇 留言。

感謝垂閱!

英文原文: https://hf.co/blog/stable-diffusion-finetuning-intel

原文作者: Julien Simon

譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向?yàn)?transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。

審校/排版: zhongdongy (阿東)


在英特爾 CPU 上微調(diào) Stable Diffusion 模型的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
临洮县| 山东| 永修县| 青田县| 吉木乃县| 张家口市| 普陀区| 阳江市| 固安县| 宣武区| 贵阳市| 利辛县| 上饶市| 开原市| 社会| 凯里市| 扎囊县| 罗甸县| 南溪县| 贺州市| 陕西省| 广汉市| 隆回县| 综艺| 阆中市| 射阳县| 获嘉县| 肥西县| 罗城| 儋州市| 安康市| 甘泉县| 龙岩市| 赣榆县| 五寨县| 新化县| 崇左市| 璧山县| 斗六市| 博客| 台东市|