《阿里云:玩轉AIGC(87頁).pdf》由會員分享,可在線閱讀,更多相關《阿里云:玩轉AIGC(87頁).pdf(87頁珍藏版)》請在三個皮匠報告上搜索。
1、序隨著人工智能技術的不斷發展,AIGC 作為其中一種重要的應用,正越來越受大眾關注與重視。AI 從理解語言、理解文字、理解圖片和視頻,走向了生成內容,這稱之為 AIGC,即人工智能自動生成內容,是一種人機共創新模式。目前,AIGC 主要的應用場景分為互聯網人機交互界面,如問答式購物,問答式搜索,問答式內容推進等;游戲和互娛 AI 內容生產,如游戲原畫及素材生成,劇情生成,NPC 人物生成等;消費電子智能家居和家電,如智能音箱,智能手表,其他可穿戴智能設備等。企業服務創意和素材生成,如商業文案生成,法律文件審核,企業廣告策劃等。本文將圍繞文本生成、圖像生成以及視頻生成這三塊主流 AIGC 的應用
2、來給大家講解詳細的操作指南以及實踐方案。以下是來自彈性計算 GPU 云服務器的 8 個 AIGC 最佳實踐,可以幫助大家更好、更快速的搭建屬于自己的 AIGC 應用,玩轉 AIGC。目錄頁從 0 快速搭建個人版“對話大模型”.5基于 AIACC 加速器快速實現 AIGC 繪畫.15快速搭建 AI 對話機器人.25AIGC 文本生成 3D 模型.30AIGC 文本生成視頻.38基于 AIACC 加速器快速實現 LLaMA-7B 指令微調.44基于 AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片.60使用 Megatron-Deepspeed 訓練 GPT-2 并生
3、成文本.78從 0 快速搭建個人版“對話大模型”5從 0 快速搭建個人版“對話大模型”一、背景信息Alpaca 大模型是一款基于 LLaMA 的大語言模型,它可以模擬自然語言進行對話交互,并協助用戶完成寫作、翻譯、編寫代碼、生成腳本等一系列創作任務。同時,使用了中文數據進行二次預訓練,提升了中文基礎語義理解能力。本文基于阿里云 GPU 服務器和 Alpaca 大模型,指導您如何快速搭建個人版“對話大模型”。二、操作步驟1.創建 ECS 實例1)在 ECS 實例創建頁面,創建 ECS 實例。關鍵參數說明如下,其他參數的配置,請參見自定義購買實例。從 0 快速搭建個人版“對話大模型”6實例規格:選
4、擇實例規格為 ecs.gn7i-c16g1.4xlarge。鏡像:公共鏡像 Ubuntu 20.04,并選中安裝 GPU 驅動,選擇 CUDA 版本 11.4.1/Driver版本 470.161.03/CUDNN 版本 8.2.4。公網IP:選中分配公網IPv4地址,帶寬計費方式選擇按量付費,帶寬峰值選擇100 Mbps,以加快模型下載速度。2)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 7860 端口。具體操作,請參見添加安從 0 快速搭建個人版“對話大模型”7全組規則。3)查看驅動以及 CUDA 庫是否安裝成功。a)使用 root 用戶遠程登錄 ECS 實例。具體
5、操作,請參見通過密碼或密鑰認證登錄 Linux實例。首次登錄 ECS 實例時,系統會自動安裝驅動。當顯示如下圖所示的回顯信息時,表示驅動以及 CUDA 庫已安裝成功。特別提醒:系統自動安裝驅動以及 CUDA 庫時,請不要手動操作或者重啟實例,否則可能會導致驅動或 CUDA 庫安裝失敗。等到安裝驅動以及 CUDA 庫完成以后,系統會自動重啟。如果創建完 ECS 實例后,沒有立即遠程登錄 ECS 實例,可能看不到類似下圖的回顯信息。b)再次使用 root 用戶遠程登錄 ECS 實例。具體操作,請參見通過密碼或密鑰認證登錄Linux 實例。從 0 快速搭建個人版“對話大模型”8c)執行以下命令,查看
6、 GPU 驅動的版本。nvidia-smi回顯信息類似下圖所示。d)執行以下命令,查看 CUDA 庫的版本。nvcc-V回顯信息如下圖所示。從 0 快速搭建個人版“對話大模型”9配置軟件1)執行以下命令,安裝 Git 和 Git LFS 軟件。apt install-y git git-lfs python-is-python32)依次執行以下命令,安裝模型所需要的 Python 包。pip install git+https:/ install sentencepiece=0.1.97-i https:/ install peft=0.2.0-i https:/ GitHub 上下載 Tra
7、nsformers 庫,由于網絡原因偶爾可能會不成功,建議您多嘗試幾次。3)在 PyTorch 環境下驗證 GPU 是否正常工作。a)執行以下命令,進入 PyTorch 環境。pythonb)執行以下命令,驗證 GPU 是否正常工作。import torchtorch.cuda.is_available()返回 true,表示 GPU 正常工作。從 0 快速搭建個人版“對話大模型”10c)執行以下命令,退出 Python。quit()下載與配置模型1)依次執行以下命令,下載 tmux 并創建一個 tmux session。apt install-y tmuxtmux說明:下載模型耗時較長,建議
8、在 tmux session 中下載,以免 ECS 斷開連接導致下載中斷。2)執行以下命令,下載 Chinese-LLaMA-Alpaca 模型。git clone https:/ chinese-alpaca-lora-13b 模型。git-lfs clone https:/huggingface.co/ziqingyang/chinese-alpaca-lora-13b4)執行以下命令,下載 llama-13b-hf。llama-13b-hf 是預訓練的 llama 13b 模型,已經轉換成了 Huggingface 的模型格式。下載llama-13b-hf 大約有 40 GiB 的數據,
9、預估下載時間約 30 分鐘,請您耐心等待。LLaMA 是第三方提供的 Huggingface 格式的預訓練模型數據。Meta 官方發布的 LLaMA模型禁止商用,并且官方暫時還沒有正式開源模型權重。這里使用這個下載鏈接只為做演示使用,不承擔任何法律責任。git-lfs clone https:/huggingface.co/decapoda-research/llama-13b-hf從 0 快速搭建個人版“對話大模型”115)依次執行以下命令,合并代碼。cd Chinese-LLaMA-Alpaca/python scripts/merge_llama_with_chinese_lora.py
10、-base_model/llama-13b-hf/-lora_model/chinese-alpaca-lora-13b/-output_type huggingface-output_dir./llama_with_lora_hf命 令 行 中 需 要 用-output_dir 命 令 指 定 一 個 輸 出 目 錄,本 示 例 中 輸 出 目 錄 為/root/Chinese-LLaMA-Alpaca/llama_with_lora_hf。轉換需要一段時間,需要耐心等待。6)執行以下命令,查看轉換完成后的文件。ls-lh llama_with_lora_hf部署 WebUI1)執行以下命令
11、,在/root 目錄或者您的工作目錄,下載 WebUI 并且進行代碼部署。cdgit clone https:/ 0 快速搭建個人版“對話大模型”122)執行以下命令,安裝代碼及依賴庫。cd text-generation-webui/pip install-r requirements.txt-ihttps:/ models 目錄下面生成一個軟鏈接,指向合并后模型數據的目錄。合并后的數據模型目錄為/root/Chinese-LLaMA-Alpaca/llama_with_lora_hf,您可以從合并代碼步驟獲取。ln-s/root/Chinese-LLaMA-Alpaca/llama_wit
12、h_lora_hf/models/llama_with_lora_hf參數說明如下:/root/Chinese-LLaMA-Alpaca/llama_with_lora_hf/:指的是合并模型存放的目錄,您可以從合并代碼步驟獲取。models/llama_with_lora_hf:指的是模型名稱,您可以修改成其他名稱。驗證結果完成以上操作后,您已經成功完成了 WebUI 部署和個人版對話大模型的搭建。您可以在WebUI 頁面,進行驗證。1)執行以下命令,運行 WebUI。cdtext-generation-webui/pythonserver.py-modelllama_with_lora_h
13、f-listen-chat-load-in-8bit參數說明如下:-model:指定的是步驟 3 生成的軟鏈接的名稱,不需要帶前面的 model/目錄名。本示例軟鏈接的名稱為 llama_with_lora_hf。-listen:用于設置 WebUI 監聽所有外部 IP(不配置-listen 默認只能監聽本地 IP),從 0 快速搭建個人版“對話大模型”13以實現從實例外訪問 WebUI。默認監聽端口是 7860,您可通過-listen-port 來指定其他監聽端口。-chat:用于指定默認的運行模式,本文示例為對話模式(可按需嘗試其他模式)。-load-in-8bit:用于指定以 8bit
14、模式加載模型。正常加載 13B 模型需要 26 GB 以上顯存,A10 顯卡只有 24 GB,所以需要以 8bit 模式加載,模型占用顯存大約為 15 GB。當顯示如下圖所示的回顯信息時,表示運行 WebUI 成功。2)在 ECS 實例頁面,獲取 ECS 實例的公網 IP 地址。3)在瀏覽器中輸入 http:/:7860,即可訪問個人版對話大模型。您可以輸入相應的問題和AI 機器人進行對話。從 0 快速搭建個人版“對話大模型”14基于 AIACC 加速器快速實現 AIGC 繪畫15基于 AIACC 加速器快速實現 AIGC 繪畫一、背景信息Stable Diffusion 是一個可通過文本生成
15、圖像的擴散模型,基于 CLIP 模型從文字中提取隱變量,并通過 UNet 模型生成圖片;最后通過逐步擴散、逐步處理圖像,優化圖像質量。AIACC-Inference(AIACC 推理加速器)Torch 版可通過對模型的計算圖進行切割,執行層間融合,以及高性能 OP 實現,大幅度提升 PyTorch 的推理性能。您無需指定精度和輸入尺寸,即可通過 JIT 編譯的方式對 PyTorch 框架下的深度學習模型進行推理優化。更多信息,請參見手動安裝 AIACC-Inference(AIACC 推理加速)Torch 版。本文基于阿里云 GPU 服務器和 Stable Diffusion 的 WebUI
16、框架,指導您如何基于 AIACC加速器快速實現 AIGC 繪畫。特別提醒阿里云不對第三方模型的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任?;?AIACC 加速器快速實現 AIGC 繪畫16二、操作步驟創建 ECS 實例1)前往實例創建頁。2)按照界面提示完成參數配置,創建一臺 ECS 實例。需要注意的參數如下,其他參數的配置,請參見自定義購買實例。實例:選擇實例規格為 ecs.gn7i-c16g1)4xlarge。鏡像:本文使用已部署好推理所需環境的云市
17、場鏡像,名稱為 ai-inference-solution。公網 IP:選中分配公網 IPv4 地址,帶寬計費模式選擇按使用流量,帶寬峰值設置為 100Mbps,以加快模型下載速度?;?AIACC 加速器快速實現 AIGC 繪畫173)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 50000 端口。具體操作,請參見添加安全組規則。4)創建完成后,在 ECS 實例頁面,獲取公網 IP 地址。說明:公網 IP 地址用于生成圖片測試時訪問 WebUI 服務。下載并配置模型本實踐中,下載了以下三個模型,您可以根據需要,切換模型進行測試。v1-5-pruned-emaonly.s
18、afetensors:Stable Diffusion v1)5 模型,一種潛在的text-to-image(文本到圖像)的擴散模型,能夠在給定任何文本輸入的情況下生成逼真的圖像。提醒:該模型中文提示詞效果不好,建議使用英文提示詞?;?AIACC 加速器快速實現 AIGC 繪畫18Taiyi-Stable-Diffusion-1B-Chinese-v0.1:太乙-中文模型,基于 0.2 億篩選過的中文圖文對訓練,可以使用中文進行 AI 繪畫。Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1:太乙-動漫風格模型,首個開源的中文 Stable Diffus
19、ion 動漫模型,該模型是基于 Taiyi-Stable-Diffusion-1B-Chinese-v0.1 進行繼續訓練,經過 100 萬篩選過的動漫中文圖文對訓練得到的。太乙-動漫風格模型不僅能夠生成精美的動漫圖像,還保留了太乙-中文模型對于中文概念強大的理解能力。1)使用 root 用戶遠程連接 ECS 實例。該市場鏡像中,運行環境及模型都安裝在/root 目錄下,連接實例時需使用 root 用戶。具體操作,請參見通過密碼或密鑰認證登錄 Linux 實例。2)執行如下命令,下載 v1-5-pruned-emaonly.safetensors 模型。cd/stable-diffusion-
20、webui/models/Stable-diffusionwgethttps:/huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors當顯示如下圖所示的回顯信息時,說明已下載完成。3)執行如下命令,下載 Taiyi-Stable-Diffusion-1B-Chinese-v0.1 模型。cd/stable-diffusion-webui/repositories/git lfs clone https:/huggingface.co/IDEA-CCNL/Taiyi-St
21、able-Diffusion-1B-Chinese-v0.1基于 AIACC 加速器快速實現 AIGC 繪畫19當顯示如下圖所示的回顯信息時,說明已下載完成。4)執行如下命令,下載 Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1 模型。cd/stable-diffusion-webui/repositories/git lfs clone https:/huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1當顯示如下圖所示的回顯信息時,說明已下載完成。5)為 Nginx
22、 添加用戶登錄驗證。該鏡像預裝了 Nginx 軟件,用于登錄鑒權,以防止非授權用戶登錄。a)執行如下命令,創建登錄用戶和密碼。htpasswd-bc/etc/nginx/password$UserName$Password說明:$UserName請替換為您自定義的用戶名,例如 admin;$Password請替換為您自定義的密碼,例如 ECStest1234。b)執行如下命令,重啟 Ngnix。systemctl restart nginx基于 AIACC 加速器快速實現 AIGC 繪畫20c)執行如下命令,查看 Ngnix 狀態。systemctl status nginx當顯示如下圖所示的
23、回顯信息時,說明 Ngnix 處于運行中。d)執行如下命令,設置 Ngnix 開機自啟動。systemctl enable nginx開始文本生成圖片步驟一:啟動步驟一:啟動 WebUIWebUI 服務服務執行如下命令,啟動 WebUI 服務。cd/stable-diffusion-webui/nohup./run_taiyi.sh&特別提醒:建議您等待 1 分鐘,等待 WebUI 加載完成?;?AIACC 加速器快速實現 AIGC 繪畫21步驟二:開啟步驟二:開啟 AIAI 繪畫并測試繪畫并測試 AiccTorchAiccTorch 加速效果加速效果1)在瀏覽器地址欄輸入 http:/:5
24、0000,在彈出的登錄對話框,輸入上章節第 5 步中創建的用戶和密碼,單擊登錄。2)開始 AI 繪畫。說明 首次應用 AiccTorch 進行圖片生成,或者切換模型后的首次圖片生成,會多占用約30s 時間,以進行 AiccTorch 模型加載。開啟 AiccTorch 加速時進行 AI 繪畫(默認已開啟)在對話框中輸入關鍵字,如鐵馬冰河入夢來,概念畫,科幻,玄幻,3D,單擊生成/Generate(您可以嘗試多次 Generate,生成更符合需求的圖片)。頁面右側將會展示生成的圖片和推理時間,本示例中單張圖片推理時間為 1.19基于 AIACC 加速器快速實現 AIGC 繪畫22禁用 AiccT
25、orch 時進行 AI 繪畫單擊設置/Settings 頁簽,左側導航選擇 AiaccTorch,取消選中 Apply Aiacctorchin Unet to speedup the whole network inference when loading models 后,單擊應用設置/Apply settings,再單擊重新加載 WebUI/Reload UI。在對話框中輸入關鍵字,單擊生成/Generate,重新生成圖片,查看推理時間(本示例為 2.04s)?;?AIACC 加速器快速實現 AIGC 繪畫23對比發現,開啟 AiccTorch 后,單張圖片的推理時間要遠少于禁用 Ai
26、ccTorch。查看不同模型的推理效果在步驟下載并配置模型中下載了 3 個模型,可根據需求切換模型,查看不同模型的推理效果。1)在頁面左上角,切換模型,例如切換為 Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1 模型?;?AIACC 加速器快速實現 AIGC 繪畫242)在對話框中輸入提示詞和反向提示詞。提示詞示例:1 個女孩,綠眼,棒球帽,金色頭發,閉嘴,帽子,看向閱圖者,短發,簡單背景,單人,上半身,T 恤反向提示詞示例:水彩,漫畫,掃描件,簡樸的畫作,動畫截圖,3D,像素風,原畫,草圖,手繪,鉛筆生成的動漫風格圖像如下圖所示??焖俅罱?AI 對
27、話機器人25快速搭建 AI 對話機器人一、背景信息ChatGLM-6B 是一個開源的、支持中英雙語對話的語言模型,它基于 General LanguageModel(GLM)架構,具有 62 億參數;并使用了和 ChatGPT 相似的技術,經過約 1 T 標識符的中英雙語訓練,輔以監督微調、反饋自助、人類反饋強化學習等技術的加持,能生成符合人類偏好的回答。本文基于阿里云 GPU 云服務器和 ChatGLM-6B 語言模型,指導您如何快速搭建一個 AI 對話機器人??焖俅罱?AI 對話機器人26重要提示:阿里云不對第三方模型“ChatGLM-6B”的合法性、安全性、準確性進行任何保證,阿里云不對
28、由此引發的任何損害承擔責任。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟創建 ECS 實例1)前往實例創建頁。2)按照界面提示完成參數配置,創建一臺 ECS 實例。需要注意的參數如下,其他參數的配置,請參見自定義購買實例。實例:選擇實例規格為 ecs.gn7i-c16g1)4xlarge。鏡像:本文使用已部署好推理所需環境的云市場鏡像,名稱為 ai-inference-solution。公網 IP:選中分配公網 IPv4 地址,帶寬計費模式選擇按使用流量,帶寬峰值設置為 100Mbps,以加快模型下載速度??焖俅罱?
29、AI 對話機器人273)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 50001 端口。具體操作,請參見添加安全組規則。4)創建完成后,在 ECS 實例頁面,獲取公網 IP 地址。說明:公網 IP 地址用于生成圖片測試時訪問 WebUI 服務??焖俅罱?AI 對話機器人28下載模型1)使用 root 用戶遠程連接 ECS 實例。該市場鏡像中,運行環境及模型都安裝在/root 目錄下,連接實例時需使用 root 用戶。具體操作,請參見通過密碼或密鑰認證登錄 Linux 實例。2)執行如下命令,下載 ChatGLM-6B 模型。cd/root/chatglmgit-lfs c
30、lone https:/huggingface.co/THUDM/chatglm-6b模型下載大約需要 35 分鐘,當顯示如下圖所示的回顯信息時,說明已下載完成。進行 AI 對話1)執行如下命令,開啟 WebUI 服務。cd/root/chatglm/ChatGLM-6Bstreamlit run web_demo2.py-server.port 50001&當出現如下回顯的時候,表示啟動成功??焖俅罱?AI 對話機器人292)在瀏覽器地址欄輸入 http:/:50001,進入 Web 頁面。3)在用戶命令輸入對話框中,輸入對話內容(例如中國有幾個直轄市?),單擊發送,即可開始 AI 對話。A
31、IGC 文本生成 3D 模型30AIGC 文本生成 3D 模型一、背景信息自多態模型 GPT-4 發布后,AIGC(AI Generated Content,AI 生成內容)時代正撲面而來,從單一的文字文本,演化到更豐富的圖片、視頻、音頻、3D 模型等。本文將基于 HRN 人臉重建模型,以人臉頭像作為輸入,利用層次化表征實現快速人臉幾何、紋理恢復,指導您如何實現使用文本生成高精度 3D 模型。關于模型的詳細信息,請參見HRN 人臉重建模型。重要提示:阿里云不對第三方模型“HRN 人臉重建模型”的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。您應自覺遵守第三方模型的用
32、戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟創建 ECS 實例1)前往實例創建頁。AIGC 文本生成 3D 模型312)按照界面提示完成參數配置,創建一臺 ECS 實例。需要注意的參數如下,其他參數的配置,請參見自定義購買實例。實例:選擇實例規格為 ecs.gn7i-c16g1)4xlarge。鏡像:本文使用已部署好推理所需環境的云市場鏡像,名稱為 ai-inference-solution。公網 IP:選中分配公網 IPv4 地址,帶寬計費模式選擇按使用流量,帶寬峰值設置為 100Mbps,以加快模型下載速度。AIGC 文本生成 3D 模型
33、323)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 50000 端口。具體操作,請參見添加安全組規則。4)創建完成后,在 ECS 實例頁面,獲取公網 IP 地址。說明:公網 IP 地址用于生成圖片測試時訪問 WebUI 服務。搭建 Stable Diffusion 環境1)使用 root 用戶遠程連接 ECS 實例。該市場鏡像中,運行環境及模型都安裝在/root 目錄下,連接實例時需使用 root 用戶。具體操作,請參見通過密碼或密鑰認證登錄 Linux 實例。2)執行如下命令,下載 v1-5-pruned-emaonly.safetensors 模型。cd/stabl
34、e-diffusion-webui/models/Stable-diffusionwget https:/huggingface.co/runwayml/stable-diffusion-v1-5/resolve/maiAIGC 文本生成 3D 模型33n/v1-5-pruned-emaonly.safetensors當顯示如下圖所示的回顯信息時,說明已下載完成。3)為 Nginx 添加用戶登錄驗證。該鏡像預裝了 Nginx 軟件,用于登錄鑒權,以防止非授權用戶登錄。a)執行如下命令,創建登錄用戶和密碼。說明:$UserName請替換為您自定義的用戶名,例如 admin;$Password請替
35、換為您自定義的密碼,例如 ECStest1234。htpasswd-bc/etc/nginx/password$UserName$Passwordb)執行如下命令,重啟 Ngnix。systemctl restart nginxc)執行如下命令,查看 Ngnix 狀態。systemctl status nginxAIGC 文本生成 3D 模型34當顯示如下圖所示的回顯信息時,說明 Ngnix 處于運行中。d)執行如下命令,設置 Ngnix 開機自啟動。systemctl enable nginx文本生成 3D 模型步驟一:(可選)基于步驟一:(可選)基于 StableStable Diffus
36、ionDiffusion 生成頭像圖片生成頭像圖片通過文本生成人臉頭像,作為人臉重建模型的圖片輸入。您也可以跳過該步驟,使用鏡像中已有的頭像生成 3D 模型。1)在瀏覽器地址欄輸入 http:/:50000,在彈出的登錄對話框,輸入步驟 3 中創建的用戶和密碼,單擊登錄。AIGC 文本生成 3D 模型352)在對話框中輸入簡單的提示語,單擊生成/Generate 生成頭像,然后單擊保存/Save。說明:以下提示語僅為示例,您可以根據需要,自行輸入提示語。Elon Musk,mugshot,smiledMark Zuckerberg,mugshot,with a serious faceAIGC
37、 文本生成 3D 模型36步驟二:使用頭像圖片生成步驟二:使用頭像圖片生成 3D3D 模型模型1)執行如下命令,切換 conda 環境到 modelscope 中。conda activate modelscope2)執行如下命令,切換到 scripts 目錄。cd/root/scripts3)(條件必選)上傳頭像圖片。如果您是通過步驟一生成的圖片或自定義圖片,需將圖片上傳到 root/scripts 目錄,并獲取帶格式的頭像圖片名稱(例如 image.png)用于生成 3D 模型。具體操作,請參見上傳文件。說明:ai-inference-solution 鏡像中自帶了頭像圖片(存放于 roo
38、t/scripts 中),您也可以跳過該步驟,直接使用該鏡像中的圖片,試玩頭像圖片生成 3D 模型。AIGC 文本生成 3D 模型374)執行如下命令,使用頭像圖片生成 3D 模型。./faceTo3D.py 頭像圖片文件名本文以頭像圖片文件名為 image.png 為例(請根據實際需求替換),則命令為:./faceTo3D.py image.png說明:首次執行腳本時,會通過公網自動下載所需模型庫,100 Mbps 帶寬下載時間大約為2 分鐘,請耐心等待。生成的 3D 模型文件存放在/root/scripts/output 目錄中,其中.obj、.mtl、.jpg 可導入Unity、UE 等
39、軟件中使用;頭像旋轉視頻(rotation video)、可視化圖片(visual image)可用于快速瀏覽生成效果。AIGC 文本生成視頻38AIGC 文本生成視頻一、背景信息自多態模型 GPT-4 發布后,AIGC(AI Generated Content,AI 生成內容)時代正撲面而來,從單一的文字文本,演化到更豐富的圖片、視頻、音頻、3D 模型等。本文基于阿里云 GPU 服務器和文本生成視頻模型,采用 Unet3D 結構,通過從純高斯噪聲視頻中,迭代去噪的過程,實現文本生成視頻功能。重要提示:阿里云不對第三方模型“文本生成視頻大模型”的合法性、安全性、準確性進行任何保證,阿里云不對由
40、此引發的任何損害承擔責任。關于模型的詳細信息,請參見文本生成視頻大模型。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟創建 ECS 實例1)前往實例創建頁。2)按照界面提示完成參數配置,創建一臺 ECS 實例。需要注意的參數如下,其他參數的配置,請參見自定義購買實例。實例:選擇實例規格為 ecs.gn7i-c16g1)4xlarge。鏡像:本文使用已部署好推理所需環境的云市場鏡像,名稱為 ai-inference-solutAIGC 文本生成視頻39公網 IP:選中分配公網 IPv4 地址,帶寬計費模式選擇按使用流量,
41、帶寬峰值設置為 100Mbps,以加快模型下載速度。2)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 50000 端口。具體操作,請參見添加安全組規則。AIGC 文本生成視頻404)創建完成后,在 ECS 實例頁面,獲取公網 IP 地址。說明:公網 IP 地址用于生成圖片測試時訪問 WebUI 服務。下載并配置模型1)使用 root 用戶遠程連接 ECS 實例。該市場鏡像中,運行環境及模型都安裝在/root 目錄下,連接實例時需使用 root 用戶。具體操作,請參見通過密碼或密鑰認證登錄 Linux 實例。2)執行如下命令,下載 v1-5-pruned-emaonly.s
42、afetensors 模型。cd/stable-diffusion-webui/models/Stable-diffusionwget https:/huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors當顯示如下圖所示的回顯信息時,說明已下載完成。AIGC 文本生成視頻413)為 Nginx 添加用戶登錄驗證。該鏡像預裝了 Nginx 軟件,用于登錄鑒權,以防止非授權用戶登錄。a)執行如下命令,創建登錄用戶和密碼。說明:$UserName請替換為您自定義的用戶名,例如
43、 admin;$Password請替換為您自定義的密碼,例如 ECStest1234。htpasswd-bc/etc/nginx/password$UserName$Passwordb)執行如下命令,重啟 Nginx。systemctl restart nginxc)執行如下命令,查看 Nginx 狀態。systemctl status nginx當顯示如下圖所示的回顯信息時,說明 Nginx 處于運行中。AIGC 文本生成視頻42d)執行如下命令,設置 Nginx 開機自啟動。systemctl enable nginx文本生成視頻1)使用 root 用戶遠程連接 ECS 實例。該市場鏡像中
44、,運行環境及模型都安裝在/root 目錄下,連接實例時需使用 root 用戶。具體操作,請參見通過密碼或密鑰認證登錄 Linux 實例。2)執行如下命令,切換 conda 環境到 modelscope 中。conda activate modelscope3)執行如下命令,切換到 scripts 目錄。cd/root/scripts4)執行如下腳本,生成視頻。./text2video.py運行過程中,請根據提示輸入英文文本,例如 Clown fish swimming through the coralreef.。說明:首次執行腳本時,會通過公網自動下載所需模型庫,100 Mbps 帶寬下載時
45、間大約為 20 分鐘,請耐心等待。AIGC 文本生成視頻43文件存放:生成的 text2video.mp4 視頻文件存放在/root/scripts/output 目錄中。文件下載:在左上角菜單欄,選擇文件 打開新文件樹,找到目標文件后右鍵,單擊下載文件即可?;?AIACC 加速器快速實現 LLaMA-7B 指令微調44基于 AIACC 加速器快速實現 LLaMA-7B 指令微調一、背景信息LLaMA(Large Language Model Meta AI)是 Meta AI 在 2023 年 2 月發布的開放使用預訓練語言模型(Large Language Model,LLM),其參數量
46、包含 7B 到 65B 的集合,并僅使用完全公開的數據集進行訓練。LLaMA 的訓練原理是將一系列單詞作為“輸入”并預測下一個單詞以遞歸生成文本。LLM 具有建模大量詞語之間聯系的能力,但是為了讓其強大的建模能力向下游具體任務輸出,需要進行指令微調,根據大量不同指令對模型部分權重進行更新,使模型更善于遵循指令。指令微調中的指令簡單直觀地描述了任務,具體的指令格式如下:instruction:Given the following input,find the missing number,input:10,12,14,_,18,output:16Alpaca 是一個由 LLaMA-7B 模型進
47、行指令微調得到的模型,其訓練過程中采用的通過指令對 LLaMA-7B 模型進行小規模權重更新的方式,實現了模型性能和訓練時間的平衡。本文基于 Alpaca 提供了一套 LLaMA-7B 模型,基于 DeepSpeed 進行指令微調訓練,并使用 AIACC 加速訓練。AIACC 包括 ACSpeed 和 AGSpeed 兩個加速器?;?AIACC 加速器快速實現 LLaMA-7B 指令微調45加速器說明相關文檔ACSpeedAIACC-ACSpeed(簡稱 ACSpeed)是阿里云自研的 AI 訓練加速器,在 AI 框架層、集合算法層和網絡層上分別實現了與開源主流分布式框架的充分兼容,并實現了
48、軟硬件結合的全面優化。ACSpeed 具有其顯著的性能優勢,在提高訓練效率的同時能夠降低使用成本,可以實現無感的分布式通信性能優化。什么是 AI 分布式訓練 通 信 優 化 庫AIACC-ACSpeedAGSpeedAIACC-AGSpeed(簡稱 AGSpeed)是阿里云推出的一個基于 PyTorch 深度學習框架研發的計算優化編譯器,用于優化 PyTorch 深度學習模型在阿里云 GPU 異構計算實例上的計算性能,可以實現計算優化。什么是計算優化編譯器 AIACC-AGSpeed重要提示:阿里云不對第三方模型“llama-7b-hf”的合法性、安全性、準確性進行任何保證,阿里云不對由此引發
49、的任何損害承擔責任。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟準備工作操作前,請先在合適的地域和可用區下創建 VPC 和交換機?;?AIACC 加速器快速實現 LLaMA-7B 指令微調46本文使用 ecs.gn7i-c32g1)32xlarge 規格的 ECS 實例進行訓練,僅部分地域可用區支持該實例規格,具體請參見 ECS 實例規格可購買地域。關于如何創建 VPC 和交換機,請參見創建專有網絡和創建交換機。創建 ECS 實例提供 2 種方式完成 ECS 實例的創建:控制臺方式和 FastGPU 方式控制臺方式
50、控制臺方式1)前往實例創建頁。2)按照向導完成參數配置,創建一臺 ECS 實例。需要注意的參數如下。更多信息,請參見自定義購買實例。實例:規格選擇 ecs.gn7i-c32g1)32xlarge(包含 4 卡 NVIDIA A10 GPU)。鏡像:使用云市場鏡像,名稱為 aiacc-train-solution,該鏡像已部署好訓練所需環境。您可以直接通過名稱搜索該鏡像,版本可選擇最新版本?;?AIACC 加速器快速實現 LLaMA-7B 指令微調47說明:您也可以選擇公共鏡像(如 CentOS 7.9 64 位),后續手動部署環境。公網 IP:選中分配公網 IPv4 地址,按需選擇計費模式和
51、帶寬。本文使用按流量計費,帶寬峰值為 5 Mbps。3)添加安全組規則。在 ECS 實例所需安全組的入方向添加一條規則,開放 7860 端口,用于訪問 WebUI。具體操作,請參見添加安全組規則?;?AIACC 加速器快速實現 LLaMA-7B 指令微調48以下示例表示向所有網段開放 7860 端口,開放后所有公網 IP 均可訪問您的 WebUI。您可以根據需要將授權對象設置為特定網段,僅允許部分 IP 地址可以訪問 WebUI。4)使用 Workbench 連接實例。如果使用示例的云市場鏡像進行測試,由于環境安裝在/root 目錄下,連接實例時需使用root 用戶。關于如何連接 ECS 實
52、例,請參見通過密碼或密鑰認證登錄 Linux 實例。FastGPUFastGPU 方式方式說明:FastGPU 方式僅支持在 Linux 系統或 macOS 系統中使用。如果您使用 Windows系統,請采用控制臺方式。1)安裝 FastGPU 軟件包并配置環境變量。a)安裝 FastGPU 軟件包。pip3 install-force-reinstall https:/ali-perseus-release.oss-cn- AccessKey(AccessKey ID 和 AccessKey Secret),以及您希望創建ECS實例的地域等信息。關于如何獲取AccessKey,請參見創建Ac
53、cessKey。export ALIYUN_ACCESS_KEY_ID=*#填入您的 AccessKey IDexport ALIYUN_ACCESS_KEY_SECRET=*#填入您的 AccessKey Secretexport ALIYUN_DEFAULT_REGION=cn-beijing#填入您希望使用的地域(Region)基于 AIACC 加速器快速實現 LLaMA-7B 指令微調492)創建一臺 ECS 實例。命 令 示 例 如 下,表 示 創 建 一 臺 名 為 aiacc_solution 的 ECS 實 例,實 例 規 格 為ecs.gn7i-c32g1)32xlarge,
54、鏡像類型為 aiacc_train_solution。說明:本文使用云市場的 aiacc-train-solution 鏡像作為示例,該鏡像已部署好訓練所需環境。您也可以選擇公共鏡像(如 CentOS 7.9 64 位),后續手動部署環境。fastgpu create-name aiacc_solution-i ecs.gn7i-c32g1)32xlarge-machines 1-image_type aiacc_train_solution3)添加安全組規則。a)添加本機公網 IP 的 22 端口到默認安全組中。fastgpu addip-ab)開放 7860 端口,用于訪問 WebUI。以
55、下命令示例表示向所有網段開放 7860 端口,開放后所有公網 IP 均可訪問您的 WebUI。您可以根據需要將 0.0.0.0/0 改為特定網段,僅允許部分 IP 地址可以訪問 WebUI。fastgpu addip aiacc_solution 0.0.0.0/0 78604)通過 SSH 連接 ECS 實例。您可以通過 fastgpu ssh instance_name命令連接 ECS 實例。示例如下:fastgpu ssh aiacc_solution說明:更多關于 FastGPU 的命令,請參見命令行使用說明?;?AIACC 加速器快速實現 LLaMA-7B 指令微調50(可選)手動
56、部署環境創建 ECS 實例時,如果您使用的是已部署好訓練所需環境的云市場鏡像,則可以跳過此步驟。如果您使用的是公共鏡像,需要手動部署環境。1)部署訓練所需環境。a)安裝 devtoolset。mkdir/root/LLaMA&cd/root/LLaMAyum install-y ninja-build centos-release-scl devtoolset-7 git-lfssource/opt/rh/devtoolset-7/enableecho source/opt/rh/devtoolset-7/enable /etc/bashrc;b)拉取代碼。配置 git。git config-
57、unset-global https.proxygit config-unset-global http.proxy拉取 stanford_alpaca。git clone https:/github)com/tatsu-lab/stanford_alpaca)gitc)安裝 Conda。wget https:/repo.anaconda)com/miniconda/Miniconda3-py39_23)1)0-1-Linux-x86_64)shsh Miniconda3-py39_23)1)0-1-Linux-x86_64)sh安裝后執行 source/.bashrc 生效環境變量,如果命令
58、行前綴出現(base)表示已啟動Conda。d)創建 Conda 虛擬環境?;?AIACC 加速器快速實現 LLaMA-7B 指令微調51conda create-n llama_train python=3.9conda activate llama_trainpip install torch=1)13.1+cu117 torchvision=0.14.1+cu117 torchaudio=0.13.1-extra-index-url https:/download.pytorch.org/whl/cu117pip install deepspeed=0.8.3pip install p
59、rotobuf=3.19.0pip install acceleratecd stanford_alpacapip install-r requirements.txte)安裝 pdsh。wget https:/ pdsh-2.29.tar.bz2cd pdsh-2.29./configure-with-ssh-with-rsh-with-mrsh-with-mqshell-with-qshell-with-dshgroups-with-machines=/etc/pdsh/machines-without-pammakemake installcd.2)使用 AIACC 加速訓練。a)安裝
60、AIACC。wget https:/ali-perseus-release.oss-cn- install aiacc-1.1.0.tar.gzb)使用 AIACC。以本方案為例,需要在訓練文件 train.py(默認在/root/LLaMA/stanford_alpaca 目錄下)中加入以下代碼:import torchimport aiacc基于 AIACC 加速器快速實現 LLaMA-7B 指令微調52說明:AIACC 默認開啟,如果想要關閉 AIACC,可以執行 export AIACC_DISABLE=1 設置環境變量。關閉后如果想要重新開啟 AIACC,可以執行 unset AIA
61、CC_DISABLE 開啟。3)安裝 WebUI。cd/root/LLaMAgit clone https:/github)com/oobabooga/text-generation-webuicd text-generation-webuigit reset-hard 7ff645899e4610b16574bdd22a4d154c93d5b830pip install-r requirements.txt啟動訓練1)下載 tmux 并創建一個 tmux session。yum install tmuxtmux說明:訓練耗時較長,建議在 tmux session 中啟動訓練,以免 ECS 斷
62、開連接導致訓練中斷。2)進入 Conda 環境。conda activate llama_train基于 AIACC 加速器快速實現 LLaMA-7B 指令微調533)獲取 llama-7b-hf 預訓練權重。a)下載 llama-7b 權重。cd/root/LLaMAgit lfs installgit clone https:/huggingface.co/decapoda-research/llama-7b-hfb)修復官方代碼 Bug。sed-i s/LLaMATokenizer/LlamaTokenizer/1./llama-7b-hf/tokenizer_config.json3)
63、創建并設置 DeepSpeed 配置文件。cd LLaMA/stanford_alpacacat 54stage3_gather_16bit_weights_on_model_save:true,communication:prescale_gradients:true,fp16:enabled:true,auto_cast:false,loss_scale:0,initial_scale_power:32,loss_scale_window:1000,hysteresis:2,min_loss_scale:1,train_batch_size:auto,train_micro_batch_s
64、ize_per_gpu:auto,wall_clock_breakdown:false,zero_force_ds_cpu_optimizer:falseEOF5)(可選)如果使用多臺 ECS 實例進行訓練,需配置 hostfile。本文使用一臺 ECS 實例進行訓練,可跳過此步驟。如下示例表示配置兩臺 ECS 實例(GPU 總數為 8)時,需要填入每臺 ECS 實例的內網 IP和 slots,其中 slots 表示進程數(即 GPU 數)。cat hostfile 55換為 2000-65535 的隨機端口號。deepspeed-master_port=$MASTER_PORT-hostfi
65、le hostfile train.py-model_name_or_path./llama-7b-hf-data_path./alpaca_data)json-output_dir./output-report_to none-num_train_epochs 1-per_device_train_batch_size 2-per_device_eval_batch_size 2-gradient_accumulation_steps 8-evaluation_strategy no-save_strategy steps-save_steps 400-save_total_limit 2-
66、learning_rate 2e-5-weight_decay 0.-warmup_ratio 0.03-lr_scheduler_type cosine-logging_steps 1-deepspeed./ds_config.json-tf32 False-bf16 False-fp16啟動訓練后預期返回如下:說明:訓練完成大概需要 7 小時左右,在 tmux session 中進行訓練的過程中,如果斷開了ECS 連接,重新登錄 ECS 實例后執行 tmux attach 命令即可恢復 tmux session,查看訓基于 AIACC 加速器快速實現 LLaMA-7B 指令微調56練進度。
67、效果展示查看查看 WebUIWebUI 推理效果推理效果1)查看原生預訓練模型的推理效果。a)進入 Conda 環境。conda activate llama_trainb)使用原生 checkpoint 文件進行推理。cd/root/LLaMA/text-generation-webuiln-s/root/LLaMA/llama-7b-hf./models/llama-7b-hfc)啟動 WebUI 服務。python/root/LLaMA/text-generation-webui/server.py-model llama-7b-hf-listen預期返回:d)打開本地瀏覽器,訪問 EC
68、S 實例的公網 IP 地址加 7860 端口,如 101)200.XX.XX:7860。e)在 Input 框中輸入問題(建議輸入英語),單擊 Generate,在 Output 框獲取結果。原生的預訓練模型不能很好理解指令。示例如下:基于 AIACC 加速器快速實現 LLaMA-7B 指令微調572)等待訓練完成后,查看指令微調后模型的推理效果。a)重新連接 ECS 實例。b)進入 Conda 環境。conda activate llama_trainc)使用訓練完成的 checkpoint 文件進行推理。cd/root/LLaMA/text-generation-webuiln-s/roo
69、t/LLaMA/stanford_alpaca/output/checkpoint-800./models/llama-7b-hf-800d)啟動 WebUI 服務。python/root/LLaMA/text-generation-webui/server.py-model llama-7b-hf-800-listen預期返回:基于 AIACC 加速器快速實現 LLaMA-7B 指令微調58e)打開本地瀏覽器,訪問 ECS 實例的公網 IP 地址加 7860 端口,如 101)200.XX.XX:7860。f)單擊 Model 頁簽,在 Model 模型列表中,選擇指令微調后模型(如本文的l
70、lama-7b-hf-800)。當頁面右下角顯示 Successfully loaded llama-7b-hf-800 時,說明該模型已加載完成。說明:llama-7b-hf-*后面的數字代表微調的 step 數,一般情況下,選擇微調 step 數越大的模型,效果越好。g)在 Input 框中輸入問題(建議輸入英語),單擊 Generate,在 Output 框獲取結果。指令微調后的模型能更好理解指令,并生成更合理的答案。示例如下:基于 AIACC 加速器快速實現 LLaMA-7B 指令微調59查看查看 AIACCAIACC 加速效果加速效果以下是使用 2 臺 ecs.gn7i-c32g1)
71、32xlarge 規格的 ECS 實例(2*4 NVIDIA A10 GPU),基于 DeepSpeed 進行訓練時,是否啟動 AIACC 的性能對比。s/it 代表訓練每個 iteration的時間,時間越短代表訓練速度越快。由下圖可以看出啟動 AIACC 后相比原生 DeepSpeed提速 35%左右。說明:訓練完成后,您可以在/root/LLaMA/stanford_alpaca/wandb/latest-run/files/output.log 文件中了解性能。使用 DeepSpeed 進行訓練使用 DeepSpeed+AIACC 進行訓練基于 AIACC 加速器快速實現 Stable
72、 Diffusion 生成特定物體圖片60基于 AIACC加速器快速實現 Stable Diffusion生成特定物體圖片一、背景信息Stable Diffusion(簡稱 SD)是一種 AI 模型,它經過訓練可以逐步對隨機高斯噪聲進行去噪以生成所需要的圖像。DreamBooth 是一種定制化 text2image 模型的方法,只需提供特定物體的 35 張圖片,就能生成該物體的圖片。我們使用 DreamBooth 對模型進行 Finetune,并利用阿里云 AI加速器中的 AIACC-AGSpeed 加速 Finetune,同時引入 ControNet 增加生成圖片的多樣性。ControlNe
73、t 是一組網絡結構,通過對 SD 添加額外的 Condition 來控制 SD,目前提供的預訓練 Condition 包括:Canny Edge,M-LSD Lines,HED Boundary,User Scribbles,Fake Scribbles,Human Pose,Semantic Segmentation,Depth,Normal Map,AnimeLine Drawing。您可以同時添加多個 ControlNet 進行多 Condition 的控制。訓練其他Condition 來控制 SD 的具體操作,請參見 Train a ControlNet to Control SD。本
74、文基于阿里云 GPU 服務器搭建 Stable Diffusion 模型,并基于 ControlNet 框架,快速生成特定物體圖片?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片61重要提示:阿里云不對第三方模型“Stable Diffusion”的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟創建 ECS 實例提供 2 種方式完成 ECS 實例的創建:控制臺方式或 FastGPU 方式??刂婆_方式控制臺方式
75、1)在 ECS 實例創建頁面,創建 ECS 實例。關鍵參數說明如下,其他參數的配置,請參見自定義購買實例。實例規格:選擇 ecs.gn7i-c8g1)2xlarge(單卡 NVIDIA A10)。鏡像:使用云市場鏡像,名稱為 aiacc-train-solution,您可以直接通過名稱搜索該鏡像,選擇最新版本即可?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片62公網 IP:選中分配公網 IPv4 地址,帶寬計費方式選擇按使用流量,帶寬峰值選擇 100Mbps,以加快模型下載速度。3)添加安全組規則。在 ECS 實例安全組的入方向添加安全組規則并放行 78
76、60 端口。具體操作,請參見添加安全組規則。以下示例表示向所有網段開放 7860 端口,開放后所有公網 IP 均可訪問您的 WebUI。您可以根據需要將授權對象設置為特定網段,僅允許部分 IP 地址可以訪問 WebUI。FastGPUFastGPU 方式方式說明:FastGPU 方式僅支持在 Linux 系統或 macOS 系統中使用。如果您使用 Windows系統,請采用控制臺方式。FastGPU 是一套阿里云推出的人工智能計算極速部署工具。您可以通過其提供的便捷的接口和自動工具,實現人工智能訓練和推理任務在阿里云 IaaS 資源上的快速部署。關于FastGPU 命令行的更多信息,請參見命令
77、行使用說明。1)登錄客戶端。您的 ECS 實例、本地機器、阿里云 Cloud Shell 工具等均可以作為客戶端安裝 FastGPU 來構建人工智能計算任務?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片632)執行以下命令,安裝 FastGPU 軟件包。pip3 install-force-reinstall https:/ali-perseus-release.oss-cn- AccessKey(AccessKey ID 和 AccessKey Secret)的具體操作,請參見創建 AccessKey。查詢 ECS 實例規格可購買的地域,請參見 ECS
78、 實例規格可購買地域總覽頁面。export ALIYUN_ACCESS_KEY_ID=*#填入您的 AccessKey IDexport ALIYUN_ACCESS_KEY_SECRET=*#填入您的 AccessKey Secretexport ALIYUN_DEFAULT_REGION=cn-beijing#填入您希望使用的地域(Region)4)執行以下命令,創建 ECS 實例。本示例以創建 1 臺實例規格為 ecs.gn7i-c32g1)32xlarge 的 ECS 實例為例,鏡像類型為aiacc_train_solution。說明:本文使用云市場的 aiacc-train-solut
79、ion 鏡像作為示例,該鏡像已部署好訓練所需環境。fastgpu create-name aiacc_solution-i ecs.gn7i-c32g1)32xlarge-machines 1-image_type aiacc_train_solution5)執行以下命令,將本機公網 IP 的 22 端口添加到默認安全組中。fastgpu addip-a6)執行以下命令,開放 7860 端口。以下命令示例表示向所有網段開放 7860 端口,開放后所有公網 IP 均可訪問您的 WebUI。您可以根據需要將 0.0.0.0/0 改為特定網段,僅允許部分 IP 地址可以訪問 WebUI?;?AIA
80、CC 加速器快速實現 Stable Diffusion 生成特定物體圖片64fastgpu addip aiacc_solution 0.0.0.0/0 78607)執行以下命令,通過 SSH 連接創建的 ECS 實例。通過taskN.aiacc_solution 命令可以連接到創建的ECS實例,taskN的N表示實例序號,0 表示第 1 臺實例,以此類推。您可以通過 taskN的 N 表示實例序號,0 表示第 1 臺實例,以此類推。fastgpu ls 命令獲取實例序號。fastgpu ssh task0.aiacc_solution配置模型1)下載 sd_dreambooth_extens
81、ion,并將該項目代碼放到/root/stable-diffusion-webui/extensions 路徑中。2)依次執行以下命令,下載文件。wget https:/ali-perseus-release.oss-cn- https:/ali-perseus-release.oss-cn- https:/ali-perseus-release.oss-cn- https:/ali-perseus-release.oss-cn- AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片65啟動并訪問 WebUI 服務1)使用 root 用戶遠程登錄 ECS 實例。具體操
82、作,請參見通過密碼或密鑰認證登錄 Linux實例。2)依次執行以下命令,啟動 WebUI 服務。重要:WebUI 服務啟動后請不要關閉,否則無法訪問 WebUI 頁面。cd/root/stable-diffusion-webuisource/root/stable-diffusion-webui/venv/bin/activatepython./launch.py-listen-port 7860-enable-insecure-extension-access-disable-safe-unpickle-xformersWebUI 服務成功啟動后,回顯信息類似如下所示。3)在 ECS 實例頁
83、面,獲取 ECS 實例的公網 IP 地址。4)在瀏覽器中輸入 http:/:7860,訪問 WebUI?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片66模型微調(Finetune)僅使用預訓練的權重的模型,只能生成預訓練數據集相似的圖片。若您希望生成自定義的圖片,可以通過 Finetune 自定義物體圖片,使得模型生成所對應物體的圖片。1)創建模型權重。a)單擊 DreamBooth 頁簽,在 Model 區域,單擊 Create。b)輸入待生成的模型權重名稱,例如:aliyun_example,并選擇創建模型權重的來源v1-5-pruned-emaon
84、ly.safetensors 6ce0161689)?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片67c)單擊 Create Model,創建模型權重。等待模型權重創建完成后,在 Output 區域會顯示 Checkpoint successfully extracted to/root/stable-diffusion-webui/models/dreambooth/aliyun_example/working。2)設置訓練參數。a)單擊 Select,選擇生成的模型權重 aliyun_example。b)選擇 Input 區域,在 Settings
85、頁簽下,選中 Use LORA,并調整訓練參數。Training Steps Per Image(Epochs):指訓練的迭代次數。默認為 100,可根據實際需要調整?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片68Batch Size:訓練數據的大小。默認為 1,一般設置為 1 或 2。如 果 您 希 望 Finetune 流 程 更 快,可 將 Save Model Frequency(Epochs)和 SavePreview(s)Frequency(Epochs)參數值調大(如果設置的值較小,可能會導致 Finetune時間較長且不穩定),不超過最
86、大的 Epochs 數即可,最大的 Epochs 數=每張圖片訓練迭代次數 Epochs*圖片數量 N。關于性能提升的更多信息,請參見 Aiacc-training 性能提升?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片69c)滾動鼠標將頁面下拉,取消選中 Gradient Checkpointing。d)在 Optimizer 中選擇 Torch AdamW,Mixed Precision 選擇 fp16 或者 no,MemoryAttention 選擇 xformers 或者 no,當 Mixed Precision 選擇 fp16 時,才能選擇 x
87、formers?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片703)選擇訓練數據集。a)在 Input 區域的 Concepts 頁簽下,在 Dataset DIrectory 中填入云服務器 ECS 中的數據集路徑。您可以將 10 張以內同一物體的圖片上傳到指定路徑。本示例中上傳圖片的路徑為/root/stable-diffusion-webui/test_imgs。b)在 Training Prompts 和 Sample Prompts 區域,配置以下參數。Instance Prompt:輸入對數據集物體的描述,格式例如:a 。本示例輸入 a yu
88、nxiaobao doll。Class Prompt:輸入數據集物體的類別,格式例如:a,本示例輸入 adoll。Sample Image Prompt:輸入和 Instance Prompt 參數一致的內容。本示例輸入a yunxiaobao doll?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片714)單擊 Train,在彈出的對話框中單擊確定。訓練大約需要 3 分鐘,請您耐心等待。訓練完成后,在 Output 區域顯示類似如下圖片。說明:訓練時間和實例規格、帶寬峰值及其相關配置有關,這里的訓練時間僅供參考?;?AIACC 加速器快速實現 Stab
89、le Diffusion 生成特定物體圖片72生成圖片Finetune 完成后,您可以通過以下 3 種方法生成圖片。1 1)使用使用 DreamboothDreambooth 生成圖片生成圖片Finetune 完成后,可以通過一些文字生成特定物體的圖像。a)單擊 Stable DIffusion checkpoint 中的按鈕,從下拉框中選擇之前 Finetune 好的模 型 權 重。例 如:aliyun_example/aliyun_example_400_lora)safetensors5b28fda46c。b)單擊 txt2img,在 Prompt 框中輸入之前 Finetune 使用的
90、 Instance Prompt 的內容。例如:a yunxiaobao doll。c)在 Batch count 后輸入生成圖片的數量,默認為 1。d)單擊右側的 Generate,即可生成對應的物體圖片?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片73e)單擊 Save,保存圖片。您也可以單擊 Zip,壓縮后保存圖片,然后單擊 Download 下載圖片。如果您選擇 Finetune 前的模型權重 v1-5-pruned-emaonly.safetensors 6ce0161689,生成的圖片類似如下圖所示。用于 Finetune 的原圖片如下圖所示
91、,可見 Finetune 后的模型能夠很好地生成所需圖片,而 Finetune 前的模型則無法生成所需要的云小寶玩偶圖片?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片742 2)使用使用 Dreambooth+Dreambooth+新的新的 promptprompt 生成圖片生成圖片使用 Dreambooth 生成圖片后,您可以通過修改 Prompt 可以對特定的物體添加不同的裝飾和背景。例如:將 a yunxiaobao doll 改成 a yunxiaobao doll wearing a red hat,可以生成戴著紅帽子的云小寶玩偶。a)單擊 t
92、xt2img,在 Prompt 框中輸入 a yunxiaobao doll wearing a red hat。b)單擊右側的 Generate,即可生成類似下圖的圖片?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片753 3)使用使用 DreamBooth+ControlNetDreamBooth+ControlNet 生成圖片生成圖片使用 Dreambooth 生成圖片后,您可以使用 ControlNet 生成特定姿態的圖片。ControlNet通過 Prompt+ControlNet Condition 生成該 Condition 下特定姿態的圖片
93、。本示例通過 ControlNet 可以生成特定姿態的云小寶,操作步驟如下:a)在 txt2img 頁簽下,單擊 ControlNet,然后上傳希望生成的姿態的圖片。b)選中 Enable,單擊按鈕,在 Preprocessor 下拉選項中選擇 Openpose。c)在 Model 下拉選項中,選擇 control_sd15_openpose。根據 Condition 的不同,Preprocessor 和 Model 的選擇也不同,Openpose 相關選項用于姿態的調整,其余設置與 Dreambooth 中的設置相同。d)單擊 Generate,即可生成對應姿態的云小寶玩偶圖片?;?AIA
94、CC 加速器快速實現 Stable Diffusion 生成特定物體圖片76Aiacc-training 性能提升本示例以 ECS 實例的規格為 ecs.gn7i-c32g1)32xlarge(4 卡 A10),Finetune4 張圖片,Training Steps Per Image(Epochs)設置為 200 為例,使用 eager 和 AIACC-AGSpeed 訓練時間對比如下所示:eager(原生訓練方式)AIACC-AGSpeed從上圖可以看出,加入 AIACC-AGSpeed 后,將 Save Model Frequency(Epochs)和 SavePreview(s)Fr
95、equency(Epochs)設置為 1000,以減少保存文件的時間對整體時間統計的影響,訓練性能提升大約 18%?;?AIACC 加速器快速實現 Stable Diffusion 生成特定物體圖片77如果您想要獲取極致的加速性能,可在 WebUI 頁面修改以下參數值:Training Steps Per Image(Epochs):默認值為 100,可修改為 150 或 200。Save Model Frequency(Epochs):默認值為 25,可修改為 1000。Save Preview(s)Frequency(Epochs):默認值為 5,可修改為 1000。使用 Megatro
96、n-Deepspeed 訓練 GPT-2 并生成文本78使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本一、背景信息GPT-2 模型是 OpenAI 于 2018 年在 GPT 模型的基礎上發布的新的無監督 NLP 模型,當時被稱為“史上最強通用 NLP 模型”。該模型可以生成連貫的文本段落,并且能在未經預訓練的情況下,完成閱讀理解、問答、機器翻譯等多項不同的語言建模任務。GPT-2 模型尤其在文本生成上有著驚艷的表現,其生成的文本在上下文連貫性和情感表達上都超過了人們的預期。GPT-2 模型由多層單向 Transformer 的解碼器部分構成,根據模型層次規模,GPT
97、-2 模型有以下幾個規格:Megatron-Deepspeed 框架結合了兩種主要技術:Megatron-LM 是由 NVIDIA 開源的 Transformer 模型框架。DeepSpeed 是由 Microsoft 開源的一個深度學習優化庫。DeepSpeed團隊通過將 DeepSpeed 庫中的ZeRO分片(ZeRO sharding)數據并行(DataParallelism)和管道并行(Pipeline Parallelism)與 Megatron-LM 中的張量并行(TensorParallelism)相結合,開發了一種基于 3D 并行的實現,這就是 Megatron-Deepspe
98、ed,它使得千億級參數量以上的大規模語言模型(LLM)的分布式訓練變得更簡單、高效和有使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本79效。本文基于阿里云 GPU 服務器,使用 Megatron-Deepspeed 框架訓練 GPT-2 模型并生成文本。重要提示:阿里云不對第三方模型“GPT-2”的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。二、操作步驟創建 ECS 實例在 ECS 實例創建頁面,創建 ECS 實例。關鍵參數說明如
99、下,其他參數的配置,請參見自定義購買實例。實例規格:選擇 ecs.gn7i-c8g1)2xlarge(單卡 NVIDIA A10)。使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本80鏡像:使用云市場鏡像,名稱為 aiacc-train-solution,您可以直接通過名稱搜索該鏡像,選擇最新版本即可。公網 IP:選中分配公網 IPv4 地址,帶寬計費方式選擇按使用流量,帶寬峰值選擇 100Mbps,以加快模型下載速度。使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本81安裝 Megatron-Deepspeed 框架1)使用 root 用戶遠程
100、登錄 ECS 實例。具體操作,請參見通過密碼或密鑰認證登錄 Linux實例。2)執行以下命令,啟動容器。docker run-d-t-network=host-gpus all-privileged-ipc=host-ulimit memlock=-1-ulimit stack=67108864-name megatron-deepspeed-v/etc/localtime:/etc/localtime-v/root/.ssh:/root/.ssh nvcr.io/nvidia/pytorch:21)10-py33)執行以下命令,進入容器終端。docker exec-it megatron-d
101、eepspeed bash4)執行以下命令,下載 Megatron-DeepSpeed 框架。git clone https:/github)com/bigscience-workshop/Megatron-DeepSpeed5)執行以下命令,安裝 Megatron-DeepSpeed 框架。cd Megatron-DeepSpeedpip install-r requirements.txt處理數據本指南使用 1GB 79K-record 的 JSON 格式的 OSCAR 數據集。1)執行以下命令,下載數據集。wget https:/huggingface.co/bigscience/mis
102、c-test-data/resolve/main/stas/oscar-1Gb)jsonl.xzwget https:/s3) Megatron-Deepspeed 訓練 GPT-2 并生成文本82wget https:/s3) oscar-1Gb)jsonl.xz3)執行以下命令,預處理數據。python3 tools/preprocess_data)py-input oscar-1Gb)jsonl-output-prefix meg-gpt2-vocab gpt2-vocab)json-dataset-impl mmap-tokenizer-type GPT2BPETokenizer-me
103、rge-file gpt2-merges.txt-append-eod-workers 8如果回顯信息類似如下所示,表示預處理數據完成。4)執行以下命令,新建 data 目錄。mkdir data使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本835)執行以下命令,將處理好的數據移動到 data 目錄下。mv meg-gpt2*./datamv gpt2*./data預訓練預訓練本示例使用單機單卡的 GPU 實例完成 GPT-2 MEDIUM 模型的預訓練。1)創建預訓練腳本文件。a)執行以下命令,創建預訓練腳本文件。vim pretrain_gpt2)shb)按 i
104、鍵,進入編輯模式,在文件中添加以下信息。#!/bin/bash#Runs the 345M parameter modelGPUS_PER_NODE=1#Change for multinode configMASTER_ADDR=localhostMASTER_PORT=6000NNODES=1NODE_RANK=0WORLD_SIZE=$($GPUS_PER_NODE*$NNODES)DATA_PATH=data/meg-gpt2_text_documentCHECKPOINT_PATH=checkpoints/gpt2DISTRIBUTED_ARGS=-nproc_per_node$GP
105、US_PER_NODE-nnodes$NNODES-node_rank$NODE_RANK-master_addr$MASTER_ADDR-master_port$MASTER_PORTpython-m torch.distributed.launch$DISTRIBUTED_ARGS pretrain_gpt.py-tensor-model-parallel-size 1-pipeline-model-parallel-size 1-num-layers 24-hidden-size 1024-num-attention-heads 16-micro-batch-size 4 使用 Mega
106、tron-Deepspeed 訓練 GPT-2 并生成文本84-global-batch-size 8-seq-length 1024-max-position-embeddings 1024-train-iters 5000-lr-decay-iters 320000-save$CHECKPOINT_PATH-load$CHECKPOINT_PATH-data-path$DATA_PATH-vocab-file data/gpt2-vocab.json-merge-file data/gpt2-merges.txt-data-impl mmap-split 949,50,1-distribu
107、ted-backend nccl-lr 0.00015-lr-decay-style cosine-min-lr 1.0e-5-weight-decay 1e-2-clip-grad 1.0-lr-warmup-fraction.01-checkpoint-activations-log-interval 10-save-interval 500-eval-interval 100-eval-iters 10-fp16c)按 Esc 鍵,輸入:wq 后,按 Enter 鍵保存文件。2)修改測試代碼。Megatron 源碼有一個斷言需要注釋掉,以保證代碼正常運行。a)執行以下命令,打開測試代碼文
108、件。vim/workspace/Megatron-DeepSpeed/megatron/model/fused_softmax.py+191b)按 i 鍵,進入編輯模式,在 assert mask is None,Mask is silently ignored due to the使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本85use of a custom kernel前加#。c)按 Esc 鍵,輸入:wq 后,按 Enter 鍵保存文件。3)預訓練。a)執行以下命令,開始預訓練。nohup sh./pretrain_gpt2)sh&b)執行如下命令,可以持續的
109、查看 nohup.out 的輸出,達到監控程序的效果。tail-f nohup.out如果回顯信息類似如下所示,表示預訓練完成。說明:預訓練完成大概需要 1 小時 30 分鐘,如果超時斷開了 ECS 連接,重新遠程登錄 ECS 實例使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本86后,執行以下命令,繼續查看預訓練進度。預訓練完成后,可以執行 Ctrl+Z 命令退出。docker exec-it megatron-deepspeed bashcd Megatron-DeepSpeedtail-f nohup.out4)(可選)執行以下命令,查看生成的模型 checkpo
110、int 路徑。本示例生成的模型 checkpoint 路徑設置在/workspace/Megatron-DeepSpeed/checkpoints/gpt2。ll./checkpoints/gpt2使用使用 GPT-2GPT-2 模型生成文本模型生成文本1)執行以下命令,安裝相關依賴。說明:由于網絡原因,執行命令后可能會失敗,建議您多次嘗試。pip install mpi4py如果回顯信息類似如下所示,表示依賴安裝完成。2)創建文本生成腳本。a)執行以下命令,創建文本生成腳本。vim generate_text.shb)按 i 鍵,進入編輯模式,在文件中增加以下內容。#!/bin/bash使用
111、 Megatron-Deepspeed 訓練 GPT-2 并生成文本87CHECKPOINT_PATH=checkpoints/gpt2VOCAB_FILE=data/gpt2-vocab)jsonMERGE_FILE=data/gpt2-merges.txtpython tools/generate_samples_gpt.py-tensor-model-parallel-size 1-num-layers 24-hidden-size 1024-load$CHECKPOINT_PATH-num-attention-heads 16-max-position-embeddings 1024-
112、tokenizer-type GPT2BPETokenizer-fp16-micro-batch-size 2-seq-length 1024-out-seq-length 1024-temperature 1)0-vocab-file$VOCAB_FILE-merge-file$MERGE_FILE-genfile unconditional_samples.json-num-samples 2-top_p 0.9-recomputec)按 Esc 鍵,輸入:wq 后,按 Enter 鍵保存文件。3)執行以下命令,生成文本。sh./generate_text.sh如果回顯信息類似如下所示,表示生成文本完成。使用 Megatron-Deepspeed 訓練 GPT-2 并生成文本884)執行以下命令,查看生成的 JSON 格式的文本文件。vim unconditional_samples.json回顯信息類似如下所示。