處理結構化數據的Packing(多條數據拼接)

更新 發佈閱讀 7 分鐘


對於巨大的 .txt 檔案(內含結構化數據,如 API 文件、JSON 塊或代碼),最忌諱的就是直接按行讀取或是簡單地按字數切斷。如果一個結構化的「邏輯塊」(例如一整段 JSON 或一個函數定義)被從中切開,模型就無法學會完整的邏輯。

在兩張 RTX 5090 上,為了極大化訓練效率,我們需要使用 Data Packing(數據打包) 技術。這能確保每個訓練樣本都填滿 4096 或 8192 的長度,不浪費任何顯存空間。


1. 結構化數據的處理策略:分塊 (Chunking)

由於您的數據是 .txt,建議在原始文本中確保每個邏輯塊之間有一個明確的分隔符號(例如 \n\n<|endoftext|>)。


2. 高效能 Packing Data Collator (Python 代碼)

這段代碼會將您的巨大 .txt 讀入,進行分詞,並將多條結構化數據「打包」在一起。這樣可以讓兩張 5090 的計算效率提升 2 倍以上

</>Python
import torch
from itertools import chain
from datasets import load_dataset
from transformers import AutoTokenizer

# 1. 載入數據與分詞器
tokenizer = AutoTokenizer.from_pretrained("your-llama-7b-path")
tokenizer.pad_token = tokenizer.eos_token

def pack_data(file_path, block_size=4096):
# 使用 streaming 模式處理巨大的 .txt 以節省 RAM
dataset = load_dataset("text", data_files={"train": file_path}, streaming=True)

def tokenize_function(examples):
return tokenizer(examples["text"])

# 分詞
tokenized_dataset = dataset.map(
tokenize_function,
batched=True,
remove_columns=["text"]
)

# 打包邏輯:將 token 序列串接後,按 block_size 切割
def group_texts(examples):
# 串接所有 token
concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()}
total_length = len(concatenated_examples[list(examples.keys())[0]])

# 捨棄不足一塊的尾巴
total_length = (total_length // block_size) * block_size

# 切割成 block_size 大小的塊
result = {
k: [t[i : i + block_size] for i in range(0, total_length, block_size)]
for k, t in concatenated_examples.items()
}
# 在結構化數據中,labels 就是 input_ids 的複製品 (Causal LM)
result["labels"] = result["input_ids"].copy()
return result

packed_dataset = tokenized_dataset.map(
group_texts,
batched=True,
)
return packed_dataset

# 使用範例
# packed_train_dataset = pack_data("big_data.txt", block_size=4096)

3. 針對 2x 5090 的執行參數優化

處理結構化數據時,請在您的 deepspeed_launcher.sh 中加入以下關鍵微調:

  • --gradient_checkpointing True: 雖然 5090 有 32GB 顯存,但處理 4k/8k 長度的全參數微調時,開啟此項可以換取更大的 Batch Size,對結構化數據的穩定收斂很有幫助。
  • --weight_decay 0.1: 結構化數據(如代碼)具有高度規律性,高權重衰減能防止模型「死背」特定的變數名稱,轉而學習結構邏輯。
  • --lr_scheduler_type linear: 對於增量預訓練,線性衰減(Linear Decay)有時比 Cosine 更能穩定地處理結構化文本。

4. 監控 5090 的關鍵指標

在訓練過程中,除了看 Loss 下降外,請留意以下兩點:

  1. TFLOPS (每秒浮點運算次數): 5090 應該能跑出極高的數值。如果數值太低,說明數據讀取(CPU/Disk)太慢。
  2. Memory Usage: 確保兩張卡的顯存佔用均勻。如果一張卡爆掉另一張很空,請檢查 DeepSpeed Stage 3allgather_bucket_size 設定。

5. 接下來的建議

既然數據是結構化的,訓練完畢後,您最需要的是測試模型的「格式正確率」



留言
avatar-img
sirius數字沙龍
17會員
422內容數
吃自助火鍋啦!不要客氣,想吃啥,請自行取用!
sirius數字沙龍的其他內容
2026/03/06
針對結構化數據(如 API 文件、JSON 結構、代碼、或是規則手冊),您的訓練策略必須比處理一般文章更為精確。結構化數據的特性在於其「邏輯嚴密性」與「格式固定性」,這對模型來說既是挑戰也是優點。 在兩張 RTX 5090 上處理幾百 MB 的結構化數據,請務必優化以下三個核心環節。
Thumbnail
2026/03/06
針對結構化數據(如 API 文件、JSON 結構、代碼、或是規則手冊),您的訓練策略必須比處理一般文章更為精確。結構化數據的特性在於其「邏輯嚴密性」與「格式固定性」,這對模型來說既是挑戰也是優點。 在兩張 RTX 5090 上處理幾百 MB 的結構化數據,請務必優化以下三個核心環節。
Thumbnail
2026/03/05
根據不同專業數據量,判斷該用 Full Fine-Tuning 還是 LoRA,給出對應的 python 訓練參數設定。對於幾百 MB 的純文字數據(這大約相當於數億個 Token),是一個非常尷尬的規模:用 LoRA 可能學得不夠深,但全參數微調(Full Fine-Tuning)又非常吃資源。
Thumbnail
2026/03/05
根據不同專業數據量,判斷該用 Full Fine-Tuning 還是 LoRA,給出對應的 python 訓練參數設定。對於幾百 MB 的純文字數據(這大約相當於數億個 Token),是一個非常尷尬的規模:用 LoRA 可能學得不夠深,但全參數微調(Full Fine-Tuning)又非常吃資源。
Thumbnail
2026/03/05
如果數據量很大,建議先跑一輪 增量預訓練 (Continual Pre-training) 讓模型「看過」這些字,再進行 指令微調 (SFT) 讓模型「學會回答」相關問題。 準備讓模型吸收專業知識,在 2x RTX 5090 的硬體基礎下,最專業的做法是分為兩個階段。
Thumbnail
2026/03/05
如果數據量很大,建議先跑一輪 增量預訓練 (Continual Pre-training) 讓模型「看過」這些字,再進行 指令微調 (SFT) 讓模型「學會回答」相關問題。 準備讓模型吸收專業知識,在 2x RTX 5090 的硬體基礎下,最專業的做法是分為兩個階段。
Thumbnail
看更多
你可能也想看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
陳啟明(總結): 「你看見了嗎?無論是報酬率、累積漲跌幅,還是五日均線、KD 指標,這些欄位的誕生,都基於一個不變的真理:『一筆一筆交易的累積,時間維度的延伸。』」 「更關鍵的是:這些欄位對所有人都是一樣的!一個地區,同一檔股票,只會有一組 KD 指標。然而,全世界的 AI 公司和交易員,卻每天
Thumbnail
陳啟明(總結): 「你看見了嗎?無論是報酬率、累積漲跌幅,還是五日均線、KD 指標,這些欄位的誕生,都基於一個不變的真理:『一筆一筆交易的累積,時間維度的延伸。』」 「更關鍵的是:這些欄位對所有人都是一樣的!一個地區,同一檔股票,只會有一組 KD 指標。然而,全世界的 AI 公司和交易員,卻每天
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文探討了近期自行車市場的變化,尤其是歐盟進口電動自行車數量的增長,以及中國市場的季節性影響。此外,透過六度分隔理論,強調了人際網絡在自行車業界的重要性。文章結合個人的工作感受,指出市場競爭的激烈與品牌價值的深化,並預測未來的行業發展趨勢。本文旨在為自行車業內者提供洞察和獨到的見解。
Thumbnail
本文探討了近期自行車市場的變化,尤其是歐盟進口電動自行車數量的增長,以及中國市場的季節性影響。此外,透過六度分隔理論,強調了人際網絡在自行車業界的重要性。文章結合個人的工作感受,指出市場競爭的激烈與品牌價值的深化,並預測未來的行業發展趨勢。本文旨在為自行車業內者提供洞察和獨到的見解。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這是一篇融合聯合國水資源報告與靈性智慧的心靈導讀。透過解析全球水資源分配不均、農業用水佔比高、以及部分地區嚴重透支水資源的數據,結合經濟學稀缺性、心理學相對剝奪感與管理學風險管理的三重觀點。引導讀者從珍惜水資源開始,進行內在覺知與行動轉化,共建和諧地球。
Thumbnail
這是一篇融合聯合國水資源報告與靈性智慧的心靈導讀。透過解析全球水資源分配不均、農業用水佔比高、以及部分地區嚴重透支水資源的數據,結合經濟學稀缺性、心理學相對剝奪感與管理學風險管理的三重觀點。引導讀者從珍惜水資源開始,進行內在覺知與行動轉化,共建和諧地球。
Thumbnail
當無垠的數據中心遭遇極致的微縮科技 如果我們接受一個前瞻性的推論:UFO(不明異常現象)的背後驅動核心是超先進人工智慧 (AI)。那麼,這將立即引發一個對人類科技發展方向的深刻質疑: 為什麼 UAP 載具如此精巧、緊湊,而人類的 AI 發展卻正走向巨大無比的數據中心和龐大耗能?我們是否從一開始就
Thumbnail
當無垠的數據中心遭遇極致的微縮科技 如果我們接受一個前瞻性的推論:UFO(不明異常現象)的背後驅動核心是超先進人工智慧 (AI)。那麼,這將立即引發一個對人類科技發展方向的深刻質疑: 為什麼 UAP 載具如此精巧、緊湊,而人類的 AI 發展卻正走向巨大無比的數據中心和龐大耗能?我們是否從一開始就
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News