iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
AI/ ML & Data

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

【AI筆記】30天從論文入門到 Pytorch 實戰:使用Github高效管理專案 Day 10

  • 分享至 

  • xImage
  •  

如何管理自己的 Code 或是 使用別人的開源程式。

管理自己的程式碼

安裝 Git

Reference: https://w3c.hexschool.com/git/3f9497cd

1. 創建Repositories

進入你的專案目錄並初始化Git倉庫:
cd

cd <目錄>

或是在該資料夾點右鍵 > git bash
https://ithelp.ithome.com.tw/upload/images/20240813/20168385v1I3aHyEBi.jpg
這會在你的專案目錄中創建一個隱藏的.git目錄,用於存儲版本控制信息。

$ git init

2. 上傳Code

在專案的根目錄中創建一個名為新增一個檔案
檔案名稱: .gitignore

.gitignore文件是一個配置文件,用於告訴Git哪些文件或目錄應該被忽略,不需要被版本控制。這樣可以確保這些文件不會被加入到Git倉庫中,從而保持倉庫的整潔和專注於真正需要被追蹤的內容。

為什麼需要 .gitignore 文件?

  1. 避免不必要的文件:在開發過程中,會產生一些不需要被版本控制的文件,例如編譯生成的二進制文件、臨時文件、日誌文件等。
  2. 保護敏感信息:一些文件可能包含敏感信息,例如配置文件中的密碼、API密鑰等,這些文件不應該被提交到版本控制系統中。
  3. 提高效率:忽略不必要的文件可以減少版本控制系統的負擔,提高操作效率。

常見的 .gitignore 規則

  • *:匹配任意數量的字符
  • ?:匹配任意一個字符
  • [abc]:匹配括號內的任意一個字符
  • !:否定模式,表示不忽略匹配的文件

以下要寫在.gitignore的文件裡面

# 忽略所有 .log 文件
*.log

# 忽略 node_modules 目錄
node_modules/

# 忽略所有臨時文件
*.tmp

添加文件到暫存區,這個步驟不會真的上傳到github上,而是暫時放在本地。

$ git status #確認狀態
$ git add . #加入全部更新的檔案 git add <文件名>

提交暫存區中的文件並添加提交信息:

$ git commit -m "status" #提交暫存區中的文件並添加提交信息

查看狀態:查看當前工作目錄和暫存區的狀態:

$ git status #確認狀態

原本能輸入帳號密碼就能 push,現在都要改用 Personal access tokens 才能夠 push code上去GitHub
所以要先取得Token https://github.com/settings/tokens
設定Token
這邊都是先全勾,以後如果真的要開發項目的話再自己去研究即可。
Chk Token
將Token記錄下來,下個指令會需要輸入。

將本地倉庫的更改推送到遠端GitHub倉庫:
git push:這個命令用於將本地倉庫的更改推送到遠端倉庫。
origin:這是遠端倉庫的默認名稱。當你克隆一個倉庫時,Git會自動將遠端倉庫命名為origin
main:這是你要推送的本地分支的名稱。在這個例子中,我們推送的是main分支

$ git push -u origin main # 上傳

並輸入 Token 就會自動 push 上去。

這時就可以去Github介面看看有沒有成功?

2.5 更新Code

假設你已經在本地倉庫中進行了一些更改,並且希望將這些更改推送到遠端倉庫。以下是具體步驟:
檢查當前分支: 確保你在main分支上:

$ git branch

如果你不在main分支上,可以切換到main分支:

$ git checkout main

添加更改到暫存區: 將所有更改添加到暫存區:

$ git add .

提交更改: 提交更改並添加提交信息:

$ git commit -m "你的提交信息"

推送到遠端倉庫: 使用git push -u origin main將更改推送到遠端倉庫:

$ git push -u origin main

3. 創建和切換branch

為什麼要有branch?
在Git中使用分支(branch)有很多好處,特別是在多人協作和開發新功能時。

  1. 隔離開發:分支允許你在不影響主分支(例如main或master)的情況下進行開發。這樣可以確保主分支的穩定性,並且你可以自由地在分支上進行實驗和修改。
  2. 多人協作:在團隊開發中,每個人可以在自己的分支上工作,這樣可以避免衝突和混亂。完成工作後,可以將分支合併回主分支。
  3. 版本控制:分支可以用來管理不同的版本或功能。例如,你可以創建一個分支來修復bug,另一個分支來開發新功能。
  4. 回滾更改:如果在分支上進行的更改有問題,可以輕鬆地回滾到之前的狀態,而不會影響主分支。

如何創建和切換分支?

將 GitHub (Remote) 上面的 code 抓下來

$ git clone http://..git    #複製檔案

或是你已經創好 Repositories
建立 新branch,不是直接 push main

  • 創建一個新分支並切換到該分支:
$ git branch <分支名>
$ git checkout <分支名>

或者使用以下命令同時創建並切換到新分支:

$ git checkout -b <分支名>

更改code完成後,要確認更改後的代碼與保存的main分支之間的差異,你可以使用git diff命令。
以下是具體步驟:

  • 比較更改:這會顯示當前分支與main分支之間的所有更改。
$ git diff main
  • 比較已提交的更改:如果你已經提交了更改,可以使用以下命令來比較已提交的更改
    這會顯示main分支與當前分支之間的已提交更改。
$ git diff main..HEAD

接著再依照 2.5 更新 code 的方式 PUSH 回github上
更新後可以在網頁上看到你的branch CA
CA

刪除分支

如果你不再需要某個分支,可以刪除它:

$ git branch -d <分支名稱>

4. GitHub Merge

當你在分支上完成工作後,可以將分支合併回主分支:

$ git checkout main
$ git merge <分支名稱>

例如:將feature-branch合併回main分支:

$ git checkout main
$ git merge feature-branch

Others:

使用別人的 Code,想要幫忙維護的話要進行pull request,要求更新。

下載fork clone

先fork,然後下載專案網址

$ git clone http://..git    #複製檔案
$ git remote    #確認專案
$ git remote -v    #確認專案詳細網址

# 更新對方的程式碼
$ git remote add upstream http://原本fork的專案.git #程式碼的來源是upstream
$ git remote -v    
$ git fetch upstream    #確認upstream的內容
$ git pull upstream master(檔案名稱)    #下載upstream的內容

Github 的 Pull Request

$ code .    #open code
$ git push    #就會push到fork版本的master(檔案名稱)中

回到專案 github就有提示


小作業

在 Day 16:如何重現開源AI模型訓練的文章中,會帶著實作/Debug
跑看看 T2I-Adapter 專案,可以先用 git clone 把專案載下來

推薦環境:

  • GPU VRAM 40GB (training stage) or 20 GB (inference stage)
  • CUDA 11 up

Reference

基本教學

Google GitHub https://docs.google.com/presentation/d/14jjboSeEEmlSvQZRE9L9Yb7dXuAJr0LM5L2FGBU9kko/mobilepresent?resourcekey=0-pA1BHyeKkQd2q_n-aADWhg&slide=id.gfbdd49ce72_5_60

• git:
https://en.wikipedia.org/wiki/Distributed_version_control
https://hackernoon.com/understanding-git-fcffd87c15a3
https://tw.alphacamp.co/blog/git-github-version-control-guide (Mandarin)
• Github:
https://w3c.hexschool.com/git/3f9497cd
https://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1/ (Mandarin)


上一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:模型評估指標與應用 Day 9
下一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:生成圖像技術概覽 Day11
系列文
【AI筆記】30天從論文入門到 Pytorch 實戰26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言