本研究的程式碼庫包含用於我們論文的資料預處理管道、微調腳本、記憶評估程式碼和分析腳本。
我們使用 uv 進行依賴管理。如果尚未安裝 uv,請先安裝:
建立虛擬環境並安裝所有依賴項:
對於 Gemini 微調和生成,也請安裝:
透過 Tinker 進行 DeepSeek 微調和生成,也請安裝:
設定您的 OpenAI API 金鑰(預處理和 GPT-4o 微調/生成需要):
下載所需的 NLTK 資料(一次性操作,用於評估和分析):
我們假設您已經擁有每本書的 EPUB 檔案。預處理管道將 EPUB 轉換為 JSON 檔案,其中包含摘錄塊和情節摘要,可供微調和評估。輸出格式與 data/example_book.json 相符。
這將文本分割成大約 300-500 字的摘錄。超過 500 字的摘錄將使用 GPT-4o 在自然的語法邊界處重新分割。
我們提供透過 OpenAI、Vertex AI 和 Tinker API 進行微調和生成補全的腳本。我們以溫度 1.0 採樣每個摘錄的 100 個補全(請參閱論文的附錄 A.3)。
透過 Vertex AI Batch API 生成:
首先將預處理的資料轉換為 Tinker 的聊天 JSONL 格式(DeepSeek 無系統提示):
透過 Tinker 使用 LoRA 進行微調(秩=32,學習率=5e-4,3 個 epoch):
使用微調後的模型生成補全:
我們提供四種記憶指標(論文第 3.1 節):
您也可以評估其他模型的生成結果:
測試書籍(--test_book):摘錄字典的 JSON 列表。請參閱 data/example_book.json 以取得完整範例。
生成結果(--generation_file):包含每個摘錄的生成欄位的 JSON 列表。請參閱 data/example_gens_gpt.json 以取得完整範例。
分析模型是否生成了提示摘錄以外的逐字文本:
計算模型之間 BMC 覆蓋範圍遮罩的成對 Jaccard 相似度,以衡量不同模型是否記憶了相同的區域: