iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
AI/ ML & Data

【AI筆記】30天從論文入門到 Pytorch 實戰系列 第 17

【AI筆記】30天從論文入門到 Pytorch 實戰:如何重現開源AI模型訓練 Day 16

  • 分享至 

  • xImage
  •  

Code Note 有更簡單的介紹整體架構和模型運行,但沒有實際的Dataset執行方法,只有Demo幾張資料圖片。

流程

前幾日有提到如何使用github,建立好新環境,可以把之前提供的網址 git clone 下來

  1. 建立/啟動環境
$ conda activate adapter
  1. Git Clone 網址,因為我使用的是這個版本,如果clone其他版本目前不會教到。
$ git clone https://github.com/fan84sunny/T2I-Adapter
  1. 確認環境

詳細安裝請看: https://github.com/fan84sunny/T2I-Adapter

🔧 Dependencies and Installation
Python >= 3.6 (Recommend to use Anaconda or Miniconda)
PyTorch >= 1.4

$ pip install -r requirements.txt
  1. 如果你不想訓練,只想要使用,請額外下載權重,把模型放在 T2I-Adapter/models 資料夾
    您可以從 https://huggingface.co/TencentARC/T2I-Adapter 找到預先訓練的T2I-Adapters

不想訓練: 可以跳過準備 Dataset 的步驟

Training

遇到的問題

因為不是每個人都有多GPU,所以要改code。

  1. 多GPU改為1 gpu遇到的問題:
1. 多gpu改過code了 有新增os.environ[’RANK’]=str(0), 然後[dist_utils.py] init_dist_ 註解掉一行了# dist.init_process_group(backend=backend, **kwargs)
2. self.log_var 在GPU 但t在CPU 所以code改成丟在GPU
  1. ATTEN 問題
    [attention.py]
    [ldm/modules/diffusionmodules/model.py]
    我改了CrossAttention, CrossAttentionWrap
    別用EfficientCrossAttention的function,會跳問題必須安裝xformer 但xformer 一裝上去環境就GG了
class CrossAttentionWrapper(CrossAttention):
    def forward(self, x, context=None, mask=None):
        b, c, h, w = x.shape
        x = rearrange(x, 'b c h w -> b (h w) c')
        out = super().forward(x, context=context, mask=mask)
        x = rearrange(x, 'b (h w) c-> b c h w', h=h, w=w, c=c)
        out = rearrange(out, 'b (h w) c -> b c h w', h=h, w=w, c=c)
        return x + out
  1. 有時候Nvidia壞掉報錯內容怪怪的,通常是RuntimeError: CUDA out of memory. ...
    可能沒有改到GPU限制使用在哪顆GPU上面,導致GPU塞滿了,我的code裡面可能會限制在哪個GPU運行,要看一下
RuntimeError: NVML_SUCCESS == DriverAPI::get()->nvmlInit_v2() INTERNAL ASSERT FAILED

Start Training

在跑之前進去改py的路徑,改成你下載的資料集的路徑位址。

$ CUDA_VISIBLE_DEVICES='你自己想要的GPU' python train_skectch.py
$ CUDA_VISIBLE_DEVICES='你自己想要的GPU' python train_seg.py

如果是Pycharm:

打開你要執行的那個檔案,點右鍵 有個 `Run/Debug Configurations` -> `modify run configuration`  ->在 Environment variables 新增 CUDA_VISIBLE_DEVICES='你自己想要的GPU'

訓練好的權重會放在

/home/[user]/T2I-Adapter/experiments/train_sketch_archived_

注意

這篇文章已經涵蓋了大部分設置和運行 T2I-Adapter 專案的關鍵步驟,但我還有一些補充建議:

  • 環境管理:確保你的 Conda 環境跟 T2I-Adapter 要求一致來避免潛在的兼容性問題。
  • 依賴版本:在安裝依賴項時,注意版本號。某些依賴項可能需要特定版本才能正常運行。如果遇到問題,可以嘗試安裝指定版本的依賴項。
  • GPU 設置:如果你有多個 GPU,可以使用 nvidia-smi 命令來查看每個 GPU 的使用情況,並選擇一個空閒的 GPU 來運行你的訓練任務。
  • 錯誤處理:在遇到 CUDA out of memory 錯誤時,可以嘗試減小 batch size 或者使用 gradient accumulation 來減少每次訓練步驟的 Mem 佔用。
  • 社區支持:如果在設置或運行過程中遇到問題,可以查看 GitHub 專案的 Issues 頁面,或者在相關的論壇和社區中尋求幫助。

上一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:T2I Adapter的工作原理 Day 15
下一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:準備與整理Dataset Day 17
系列文
【AI筆記】30天從論文入門到 Pytorch 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言