Nova 2.0 上的 CPT - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Nova 2.0 上的 CPT

Amazon Nova Lite 2.0 是在比 Nova Lite 1.0 更大且更多樣化的資料集上訓練的推理模型。雖然 Nova Lite 2.0 是較大的模型,但其推論速度比 Nova Lite 1.0 更快,同時提供增強的推理功能、更長的內容長度和改善的多語言效能。

Nova 2.0 上的 CPT 可讓您使用網域特定資料擴充這些進階功能,讓模型能夠在專業領域開發深度專業知識,同時維持其卓越的推理和分析能力。

2.0 上 CPT 的資料準備

資料格式要求

訓練和驗證資料集必須是符合下列格式的 JSONL 檔案,其中每一行都包含代表與必要欄位和結構對話的 JSON 物件。請見此處範例:

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

文字項目應包含代表目標網域的自然流動、高品質內容。

測試資料是否能夠轉換為 Arrow 格式。使用以下 python 指令碼來提供協助。確保至少使用 datasets==2.18.0版本:

from datasets import load_dataset, load_from_disk from pathlib import Path input_path = Path("<Your jsonl file>") output_path = Path("<Your output directory>") dataset = load_dataset("json", data_files=str(input_path), split="train") dataset.save_to_disk(str(output_path), max_shard_size="1GB") try: test_dataset = datasets.load_from_disk(output_dir) print(f"Dataset loaded successfully ✅! Contains {len(test_dataset)} samples") except Exception as e: print(e)

它應該列印與 JSONL 檔案中相同的行數。

使用 datamixing 時,請使用 執行第一個任務max_steps=2。這將有助於在叢集中建立資料存取的最佳化,並驗證所有資料混合是否可用。

如何準備 CPT 的資料

訓練資料是持續預先訓練成功最重要的決定因素。雖然 CPT 資料通常被描述為「未標記」,但事實更為細微。資料的結構、格式化和呈現方式決定模型是否會獲得業務使用案例所需的知識和技能。

準備 CPT 的結構化業務資料集

這是公司和組織在領域中建立專業基礎模型的常見挑戰。大多數企業擁有結構化資料的豐富儲存庫:產品目錄、使用者設定檔、交易日誌、表單提交、API 呼叫和操作中繼資料。乍看之下,這看起來與標準預先訓練中常用的非結構化 Web 文字非常不同。

若要有效地從結構化商業資料中學習,請仔細考慮下游任務並設計資料呈現,以強制模型學習正確的預測關係。

若要釋放持續預先訓練的完整潛力,請考慮:

  • 模型在推論時間應執行的任務

  • 原始資料中存在哪些資訊

  • 如何建構該資料,讓模型學習正確擷取和操作資訊

只要將結構化資料傾印到訓練中,就不會教導模型推理它。主動調整資料呈現的形狀,以引導模型學習的內容。

在下列各節中,有文獻回顧,展示了資料增強的重要性,並為結構化商業資料提供範例增強策略,以提供有關如何處理和組織 CPT 商業資料集的實用想法。

文獻中 CPT 的結構化資料

CPT 可以將網域事實封裝到模型中,但通常無法在輸入或任務轉移時擷取和操縱這些事實。受控實驗顯示,如果在預先訓練期間沒有多樣化擴增,模型會以簡潔的方式記住事實,即使在稍後的指令調校後仍難以擷取,並且建議像訓練早期的訊號一樣注入指令。對於半結構化資料,隨機序列化和其他擴增可減少結構描述過度擬合,這就是為什麼 CPT 應與指令樣式任務交錯,而不是先執行 和稍後執行 IFT。專注於財務的工作進一步發現,與循序配方相比,在批次時間聯合混合 CPT 和指令資料可改善一般化並減少忘記。Qwen 技術報告透過將高品質指令資料整合到預先訓練本身來收斂在相同的模式,這可提升內容學習並保留後續指示,同時獲得新的領域知識。

半結構化體的資料擴增是關鍵控制桿。合成圖形感知 CPT 會將小型網域集擴展到實體連結體庫,以明確教導推論時具有擷取的關係和化合物。Joint CPT plus 指令混合效能優於金融領域的序列管道,並平衡具有一般資料的網域,可降低一般技能的降級。非常大規模的網域 CPT 也可以保留廣泛的能力,甚至允許透過模型合併進行權衡,但仍指向指令調校作為重要的後續步驟,加強在 CPT 期間引入指令訊號的值。

透過隨機化和隨機化來注入多樣性

有助於有效從結構化和半結構化資料集教導模型的一般策略是隨機隨機捨棄資料集中的欄位順序,甚至隨機捨棄一些索引鍵。

隨機顯示欄位會強制模型讀取每個值的意義,而不是顯示的位置,並了解所有欄位之間的關係。例如,如果視訊遊戲張貼在 amazon 商店,當 "Title"、"Platform"、"Price"、"Condition" 和 "Edition" 以不同的排列到達時,模型無法依賴「第三個槽是平台」;它必須將標籤繫結至值,並了解屬性之間的雙邊關係:標題 ⇄ 平台、平台 ⇄ 價格、條件 ⇄ 價格。例如,它可以從遊戲名稱和觀察價格推斷可能平台,或根據標題和平台估計合理的價格範圍。

在序列化期間隨機捨棄索引鍵就像功能捨棄一樣:它可防止對任一欄位進行共同調整,並強制模型從剩餘的證據中復原缺少的資訊。如果 "Platform" 不存在,模型必須從標題字串或相容性文字中挑選;如果 "Price" 隱藏,則必須從平台、版本和條件中三角。這會建置對稱 (A→B 和 B→A)、對雜亂真實世界清單的穩健性,以及欄位遺失、重新命名或重新排序時的結構描述變異。

購物風格範例讓它變得具體。以多種方式序列化相同的項目:"Title: 'Elden Ring' | Platform: PlayStation 5 | Condition: Used—Like New | Price: $34.99" 和排列,例如 "Price: $34.99 | Title: 'Elden Ring' | Condition: Used—Like New | Platform: PlayStation 5",並且在某些傳遞中捨棄 "Platform",同時在描述中保留 "Compatible with PS5"。訓練互補目標,例如從 {title, price} 預測平台,以及從 {title, platform} 預測價格儲存貯體。由於索引鍵的順序甚至存在都不同,因此唯一穩定的策略是了解屬性之間的真實關係,而不是記住範本。

資料呈現的方式很重要

LLMs會從他們已看到的內容預測下一個字符來學習。因此,訓練期間顯示的欄位和事件順序會決定模型可以學習的內容。如果訓練格式符合實際任務,則損失會落在確切的決策權杖上。如果欄位在沒有結構的情況下拼湊在一起,模型會學習捷徑或記住熱門度,然後在要求選擇選項時失敗。

先顯示情況,再顯示選項,再顯示決策。如果模型也應該了解結果或說明,請在決策之後放置它們。

CPT 的封裝範例

什麼是封裝?

這只是表示使用多個完整範例填入訓練資料中的每個序列視窗,讓視窗以真實字符密集,而不是填補。

為什麼它很重要

在訓練期間會設定最大內容長度,例如 8,192 個字符。批次的形狀為 【批次大小 × 內容長度】。如果訓練範例短於內容長度,則會填充剩餘的位置。即使已遮罩遺失,填補仍會透過注意力和 MLP 核心執行,因此會為沒有學習訊號的字符支付運算費用。

如何進行封裝?

若要封裝多個範例,請在 之間使用 [DOC] 分隔符號串連多個訓練範例 (請注意 【DOC】 前後的空間),讓範例的完整長度低於所需的內容長度。

封裝的文件範例如下所示:

{"text": "training sample 1 [DOC] training sample 2 [DOC] training sample 3"}