回顧過去的學習歷程,吳恩達和李宏毅老師的影片為我的深度學習之路提供了極大的幫助。他們幽默風趣的講解方式和簡單直覺的闡述,讓枯燥的理論學習變得生動有趣。
然而,在實踐的時候,許多學弟學妹們最初會煩惱於怎麼去獲取國外大模型的API ,儘管最終都能找到解決方法,但第一次的畏難情緒總是會拖延學習進度,逐漸轉變為「看影片就夠了」的狀態。我時常在留言區看到類似的討論,於是決定利用閒暇時間幫學子們跨過這道門檻,這也是計畫的初衷。
本專案不會提供?科學上網的教程,也不會依賴平台自訂的接口,而是使用更相容的OpenAI SDK,幫助大家學習更通用的知識。
專案將從簡單的API 呼叫入手,帶你逐步深入大模型的世界。在過程中,你將掌握AI 影片摘要、 LLM 微調和AI 影像生成等技能。
強烈建議觀看李宏毅老師的課程「生成式人工智慧導論」同步學習:課程相關連結快速訪問
現在,專案也開設了?CodePlayground,你可以按照文件配置好環境,使用一行程式碼運行腳本,體驗AI 的魅力。
?論文隨筆位於PaperNotes,將逐步上傳大模型相關的基礎論文。
基礎映像已經準備好,如果你還沒配置好屬於自己的深度學習環境,不妨試試看Docker。
祝你旅途愉快!
---
: 基礎知識,根據需要進行觀看,也可以暫時跳過。其中的程式碼檔案結果都會在文章中示出,但仍建議動手運行程式碼。可能會有顯存要求。API
: 文章只使用大模型的API,不受裝置限制,無GPU 也可運作。LLM
: 大型語言模型相關的實踐,程式碼檔案可能有記憶體需求。SD
: Stable Diffusion,文生圖相關的實踐,程式碼檔案有記憶體需求。File
的程式碼,學習效果一致。Setting
-> Accelerator
->选择GPU
。代码执行程序
->更改运行时类型
->选择GPU
。Guide | Tag | Describe | File | Online |
---|---|---|---|---|
00. 阿里大模型API 取得步驟 | API | 將帶你一步步的獲取API,如果是第一次註冊,需要進行一次身份驗證(人臉辨識)。 | ||
01. 初識LLM API:環境配置與多輪對話演示 | API | 這是一段入門的配置和演示,對話程式碼修改自阿里開發文件。 | Code | Kaggle Colab |
02. 簡單入門:透過API 與Gradio 建置AI 應用 | API | 指導如何去使用Gradio 建立一個簡單的AI 應用。 | Code | Colab |
03. 進階指南:自訂Prompt 提升大模型解題能力 | API | 你將學習自訂一個Prompt 來提升大模型解數學題的能力,其中一樣會提供Gradio 和非Gradio 兩個版本,並展示程式碼細節。 | Code | Kaggle Colab |
04. 認識LoRA:從線性層到注意力機制 | --- | 在正式進入實務之前,你需要知道LoRA 的基礎概念,這篇文章會帶你從線性層的LoRA 實現到注意力機制。 | ||
05. 理解Hugging Face 的AutoModel 系列:不同任務的自動模型載入類 | --- | 我們即將使用的模組是Hugging Face 中的AutoModel,這篇文章一樣是一個前置知識(當然你可以跳過,等後續產生疑惑時再看)。 | Code | Kaggle Colab |
06. 開始實踐:部署你的第一個語言模型 | LLM | 實現非常入門的語言模型部署,專案到現在為止都不會有GPU 的硬性要求,你可以繼續學習。 | Code app_fastapi.py app_flask.py | |
07. 探究模型參數與顯存的關係以及不同精確度所造成的影響 | --- | 了解模型參數和顯存的對應關係並掌握不同精確度的導入方式會使得你對模型的選擇更加稱手。 | ||
08. 試著微調LLM:讓它會寫唐詩 | LLM | 這篇文章與03. 進階指南:自訂Prompt 提升大模型解題能力一樣,本質上是專注於“用”而非“寫”,你可以像之前一樣,對整體的流程有了一個了解,嘗試調整超參數部分來查看對微調的影響。 | Code | Kaggle Colab |
09. 深入理解Beam Search:原理, 範例與程式碼實現 | --- | 從範例到程式碼演示,講解Beam Search 的數學原理,這應該能解決一些先前閱讀的困惑,最終提供一個簡單的使用Hugging Face Transformers 庫的範例(如果跳過了之前的文章的話可以嘗試它)。 | Code | Kaggle Colab |
10. Top-K vs Top-P:生成式模型中的採樣策略與Temperature 的影響 | --- | 進一步向你展示其他的生成策略。 | Code | Kaggle Colab |
11. DPO 微調範例:根據人類偏好最佳化LLM 大語言模型 | LLM | 一個使用DPO 微調的範例。 | Code | Kaggle Colab |
12. Inseq 特徵歸因:可視化解釋LLM 的輸出 | LLM | 翻譯和文本生成(填空)任務的可視化範例。 | Code | Kaggle Colab |
13. 了解人工智慧可能存在的偏見 | LLM | 不需要理解程式碼,可以當作休閒時的有趣探索。 | Code | Kaggle Colab |
14. PEFT:在大模型中快速應用LoRA | --- | 學習如何在導入模型後增加LoRA 層。 | Code | Kaggle Colab |
15. 用API 實作AI 影片摘要:動手製作屬於你的AI 影片助手 | API & LLM | 你將了解到常見的AI 影片總結小助手背後的原理,並動手實現AI 影片摘要。 | Code - 完整版 Code - 精簡版 ?腳本 | Kaggle Colab |
16. 用LoRA 微調Stable Diffusion:拆開煉丹爐,動手實現你的第一次AI 繪畫 | SD | 使用LoRA 進行文生圖模型的微調,現在你也能夠提供別人屬於你的LoRA 檔案。 | Code Code - 精簡版 | Kaggle Colab |
17. 淺談RTN 模型量化:非對稱vs 對稱.md | --- | 更進一步了解RTN 模型量化的行為,文章以INT8 為例進行解說。 | Code | Kaggle Colab |
18. 模型量化技術概論與GGUF/GGML 文件格式解析 | --- | 這是一篇概述文章,或許可以解決一些你在使用GGUF/GGML 時的疑惑。 | ||
19a. 從載入到對話:使用Transformers 本地運行量化LLM 大模型(GPTQ & AWQ) 19b. 從載入到對話:使用Llama-cpp-python 本地運行量化LLM 大模型(GGUF) | LLM | 你將在自己的電腦上部署一個擁有70 億(7B)參數的量化模型,注意,這篇文章沒有顯示卡要求。 19 a 使用Transformers,涉及GPTQ 和AWQ 格式的模型載入。 19 b 使用Llama-cpp-python,涉及GGUF 格式的模型載入。 另外,你還將完成本地的大模型對話互動功能。 | Code - Transformers Code - Llama-cpp-python ?腳本 | |
20. RAG 入門實踐:從文件拆分到向量資料庫與問答構建 | LLM | RAG 的相關實務。 了解文字分塊的遞歸工作原理。 | Code | |
21. BPE vs WordPiece:瞭解Tokenizer 的工作原理與子詞分割方法 | --- | Tokenizer 的基本操作。 了解常見的子字分割方法:BPE 和WordPiece。 了解注意力遮罩(Attention Mask)和詞元類型ID (Token Type IDs)。 | Code | Kaggle Colab |
22. 作業- Bert 微調抽取式問答 | 這是一個使用BERT 微調下游問答任務的作業,你可以嘗試它並嘗試加入Kaggle 的"比賽",一周後會給出所有提示相關的引導文章,可以選擇現在進行學習也可以留待以後。 引導文章不會覆蓋作業表述,到時候會上傳兩版程式碼學習,所以不用擔心。 這裡不會存在Deadline。 | Code - 作業 | Kaggle Colab |
Tip
如果你喜歡拉取倉庫到本地進行閱讀.md
,那麼在出現公式報錯的時候,請使用Ctrl+F
或Command+F
,搜尋\_
並全部替換為_
。
拓展閱讀:
Guide | Describe |
---|---|
a. 使用HFD 加快Hugging Face 模型和資料集的下載 | 如果你覺得模型下載實在太慢了,可以參考這篇文章來設定。 遇到代理相關的443 錯誤,也可以試著查看這篇文章。 |
b. 命令列基礎指令速查(Linux/Mac適用) | 一份命令行的指令速查,基本上包含當前倉庫的涉及的所有指令,在感到疑惑時去查看它。 |
c. 一些問題的解決方法 | 這裡會解決一些專案運行過程中可能遇到的問題。 - 如何拉取遠端倉庫覆蓋本地的一切修改? - 怎麼檢視和刪除Hugging Face 下載的文件,怎麼修改儲存路徑? |
d. 如何載入GGUF 模型(分片/Shared/Split/00001-of-0000...的解) | - 了解Transformers 關於GGUF 的新功能。 - 使用Transformers/Llama-cpp-python/Ollama 載入GGUF 格式的模型檔。 - 學習合併分片的GGUF 文件。 - 解決LLama-cpp-python 無法offload 的問題。 |
e. 資料增強:torchvision.transforms 常用方法解析 | - 了解常用的影像資料增強方法。 Code | Kaggle | Colab |
f. 交叉熵損失函數nn.CrossEntropyLoss() 詳解與要點提醒(PyTorch) | - 了解交叉熵損失的數學原理及PyTorch 實現。 - 了解初次使用時需要注意的地方。 |
g. 嵌入層nn.Embedding() 詳解與要點提醒(PyTorch) | - 了解嵌入層和詞嵌入的概念。 - 使用預訓練模型視覺化Embedding。 Code | Kaggle | Colab |
h. 使用Docker 快速配置深度學習環境(Linux) h. Docker 基礎指令介紹和常見報錯解決 | - 使用兩行指令配置好深度學習環境 - Docker 基礎指令介紹 - 解決使用時的三個常見報錯 |
資料夾解釋:
Demos
所有的代碼文件都將存放在其中。
data
存放程式碼中可能用到的小型數據,不需要關注這個資料夾。
GenAI_PDF
這裡是【生成式人工智慧導論】課程的作業PDF文件,我上傳了它們,因為其最初保存在Google Drive 中。
Guide
所有的指導文件都將存放在其中。
assets
這裡是.md 檔案用到的圖片,不需要關注這個資料夾。
PaperNotes
論文隨筆。
CodePlayground
一些有趣的程式碼腳本範例(Toy 版)。
README.md
summarizer.py ?腳本
AI 視訊/音訊/字幕摘要。
chat.py ?腳本
AI 對話。
生成式人工智慧導論學習資源
課程首頁
官方| 授權影片: YouTube | Bilibili
中文鏡像版的製作與分享已經獲得李宏毅老師的授權,感謝老師對於知識的無私分享!
PS 中文鏡像將完全實現作業代碼的所有功能(本地運行),Kaggle 是國內可直連的線上平台,中文Colab 和Kaggle 內容一致,英文Colab 連結對應於原作業,選擇其中一個完成學習即可。
根據實際需求,從下方選擇一種方式來準備學習環境,點選►
或文字展開。
Kaggle (國內直連,推薦):閱讀文章《Kaggle:免費GPU 使用指南,Colab 的理想替代方案》進行了解。
Colab (需要?科學上網)
專案中的程式碼檔案在兩個平台是同步的。
Linux (Ubuntu) :
sudo apt-get update
sudo apt-get install git
macOS :
先安裝Homebrew:
/bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
然後運行:
brew install git
Windows :
從Git for Windows 下載並安裝。
Linux (Ubuntu) :
sudo apt-get update
sudo apt-get install wget curl
macOS :
brew install wget curl
Windows :
從Wget for Windows 和Curl 官方網站下載並安裝。
造訪Anaconda 官方網站,輸入信箱地址後檢查信箱,你應該可以看到:
點擊Download Now
,選擇合適的版本並下載(Anaconda 和Miniconda 都可以):
Linux (Ubuntu) :
安裝Anaconda
造訪repo.anaconda.com 進行版本選擇。
# 下载 Anaconda 安装脚本(以最新版本为例)
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
# 运行安装脚本
bash Anaconda3-2024.10-1-Linux-x86_64.sh
# 按照提示完成安装(先回车,空格一直翻页,翻到最后输入 yes,回车)
# 安装完成后,刷新环境变量或者重新打开终端
source ~ /.bashrc
安裝Miniconda (建議)
請造訪repo.anaconda.com/miniconda 進行版本選擇。 Miniconda 是精簡版的Anaconda,只包含Conda 和Python。
# 下载 Miniconda 安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh
# 按照提示完成安装(先回车,空格一直翻页,翻到最后输入 yes,回车)
# 安装完成后,刷新环境变量或者重新打开终端
source ~ /.bashrc
macOS :
對應取代Linux 指令中的網址。
安裝Anaconda
造訪repo.anaconda.com 進行版本選擇。
安裝Miniconda (建議)
請造訪repo.anaconda.com/miniconda 進行版本選擇。
在終端機中輸入以下命令,如果顯示版本訊息,則表示安裝成功。
conda --version
cat << ' EOF ' > ~/.condarc
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirror.nju.edu.cn/anaconda/pkgs/main
- https://mirror.nju.edu.cn/anaconda/pkgs/r
- https://mirror.nju.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirror.nju.edu.cn/anaconda/cloud
pytorch: https://mirror.nju.edu.cn/anaconda/cloud
EOF
[!note]
去年可用的鏡像來源很多已經不可用,目前其餘鏡像站配置可以參考南大這個非常nice 的文件:鏡像使用幫助。
注意:如果已經安裝了Anaconda 或Miniconda,系統中會包含pip
,無需額外安裝。
Linux (Ubuntu) :
sudo apt-get update
sudo apt-get install python3-pip
macOS :
brew install python3
Windows :
下載並安裝Python,確保勾選「Add Python to PATH」選項。
開啟命令提示符,輸入:
python -m ensurepip --upgrade
在終端機中輸入以下命令,如果顯示版本訊息,則表示安裝成功。
pip --version
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
透過以下命令拉取項目:
git clone https://github.com/Hoper-J/AI-Guide-and-Demos-zh_CN.git
cd AI-Guide-and-Demos-zh_CN
版本不限制,可以更高:
conda create -n aigc python=3.9
按y
回車以繼續,等創建完成後,啟動虛擬環境:
conda activate aigc
接下來需要進行基礎的依賴安裝,參考PyTorch 官網,以CUDA 11.8 為例(若顯示卡不支援11.8,則需要更換指令),二選一進行安裝:
# pip
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# conda
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
現在我們成功配置了所有需要的環境,準備開始學習:) 其餘依賴在每個文章中會單獨列出。
[!note]
Docker 映像已經預先安裝了依賴,不用重新安裝。
先安裝jupyter-lab
,這比jupyter notebook
好用很多。
pip install jupyterlab
安裝完成後,執行下面的命令:
jupyter-lab
現在你將可以透過彈出的連結進行訪問,一般位於8888 埠。對於圖形化介面,Windows/Linux 摁住Ctrl
,mac 按住Command
,然後點擊連結可以直接跳轉。至此,將獲得項目的全貌:
沒有安裝Docker 的同學可以閱讀文章《使用Docker 快速配置深度學習環境(Linux)》,建議初學者閱讀《Docker 基礎命令介紹和常見報錯解決》。
所有版本都預先安裝了sudo
、 pip
、 conda
、 wget
、 curl
和vim
等常用工具,並且已經配置好pip
和conda
的國內鏡像來源。同時,整合了zsh
和一些實用的命令列插件(命令自動補全、語法高亮、以及目錄跳轉工具z
)。此外,已預先安裝jupyter notebook
和jupyter lab
,設定了其中的預設終端為zsh
,方便進行深度學習開發,並優化了容器內的中文顯示,避免出現亂碼問題。其中也預先配置了Hugging Face 的國內鏡像位址。
pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel
,預設python
版本為3.11.10,可透過conda install python==版本号
直接修改版本。Apt 安裝:
wget
、 curl
:命令列下載工具vim
、 nano
:文字編輯器git
:版本控制工具git-lfs
:Git LFS(大檔案儲存)zip
、 unzip
:檔案壓縮和解壓工具htop
:系統監控工具tmux
、 screen
:會話管理工具build-essential
:編譯工具(如gcc
、 g++
)iputils-ping
、 iproute2
、 net-tools
:網路工具(提供ping
、 ip
、 ifconfig
、 netstat
等指令)ssh
:遠端連線工具rsync
:檔案同步工具tree
:顯示檔案和目錄樹lsof
:查看目前系統開啟的文件aria2
:多執行緒下載工具libssl-dev
:OpenSSL 開發函式庫pip 安裝:
jupyter notebook
、 jupyter lab
:互動式開發環境virtualenv
:Python 虛擬環境管理工具,可以直接用condatensorboard
:深度學習訓練視覺化工具ipywidgets
:Jupyter 小工具庫,用以正確顯示進度條插件:
zsh-autosuggestions
:指令自動補全zsh-syntax-highlighting
:語法高亮z
:快速跳轉目錄dl (Deep Learning)版本在base基礎上,額外安裝了深度學習可能用到的基礎工具和函式庫:
Apt 安裝:
ffmpeg
:音視頻處理工具libgl1-mesa-glx
:圖形庫依賴(解決一些深度學習框架圖形相關問題)pip 安裝:
numpy
、 scipy
:數值計算與科學計算pandas
:數據分析matplotlib
、 seaborn
:資料視覺化scikit-learn
:機器學習工具tensorflow
、 tensorflow-addons
:另一個流行的深度學習框架tf-keras
:Keras 介面的TensorFlow 實現transformers
、 datasets
:Hugging Face 提供的NLP 工具nltk
、 spacy
:自然語言處理工具如果需要額外的庫,可以透過以下命令手動安裝:
pip install --timeout 120 <替换成库名>
這裡--timeout 120
設定了120 秒的超時時間,確保在網路不佳的情況下仍有足夠的時間進行安裝。如果不進行設置,在國內的環境下可能會遇到安裝包因下載逾時而失敗的情況。
注意,所有鏡像都不會提前拉取倉庫。
假設你已經安裝並配置好了Docker,那麼只需兩行命令即可完成深度學習的環境配置,對於當前項目,你可以查看完版本說明後進行選擇,二者對應的image_name:tag
如下:
hoperj/quickstart:base-torch2.5.1-cuda11.8-cudnn9-devel
hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
拉取指令為:
docker pull < image_name:tag >
以下以dl版為例進行指令演示,選擇其中一種方式完成。
docker pull dockerpull.org/hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
可以透過百度雲盤下載檔案(阿里雲盤不支援分享大的壓縮檔)。
同名檔案內容相同,
.tar.gz
為壓縮版本,下載後透過以下指令解壓縮:gzip -d dl.tar.gz
假設dl.tar
被下載到了~/Downloads
中,那麼切換至對應目錄:
cd ~ /Downloads
然後載入鏡像:
docker load -i dl.tar
此模式下,容器會直接使用主機的網路配置,所有連接埠都等同於主機的端口,無需單獨映射。如果只需映射指定端口,將
--network host
替換為-p port:port
。
docker run --gpus all -it --name ai --network host hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh
對於需要使用代理的同學,增加-e
來設定環境變量,也可以參考拓展文章a:
假設代理的HTTP/HTTPS 連接埠號碼為7890, SOCKS5 為7891:
-e http_proxy=http://127.0.0.1:7890
-e https_proxy=http://127.0.0.1:7890
-e all_proxy=socks5://127.0.0.1:7891
融入到先前的命令中:
docker run --gpus all -it
--name ai
--network host
-e http_proxy=http://127.0.0.1:7890
-e https_proxy=http://127.0.0.1:7890
-e all_proxy=socks5://127.0.0.1:7891
hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
/bin/zsh
[!tip]
常用操作提前看:
- 啟動容器:
docker start <容器名>
- 運行容器:
docker exec -it <容器名> /bin/zsh
- 容器內退出:
Ctrl + D
或exit
。- 停止容器:
docker stop <容器名>
- 刪除容器:
docker rm <容器名>
git clone https://github.com/Hoper-J/AI-Guide-and-Demos-zh_CN.git
cd AI-Guide-and-Demos-zh_CN
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
對於圖形化介面,Windows/Linux 摁住Ctrl
,mac 按住Command
,然後點擊連結可以直接跳轉。
感謝你的STAR?,希望這一切對你有幫助。