怎么在word里做網站百度競價代運營公司
微調模型是為了讓模型在特殊領域表現(xiàn)良好,幫助其學習到專業(yè)術語等。
本文采用llama_index框架微調BGE模型,跑通整個流程,并學習模型微調的方法。
已開源:https://github.com/stay-leave/enhance_llm
一、環(huán)境準備
Linux環(huán)境,GPU L20 48G,Python3.8.10。
pip該庫即可。
二、數(shù)據準備
該框架實現(xiàn)了讀取各種類型的文件,給的示例就是pdf。
因此準備了一些網絡輿情相關的論文pdf,選擇70%作為訓練數(shù)據,剩下作為驗證數(shù)據。都放在data文件夾下。
三、微調腳本編寫
1.讀取數(shù)據
使用SimpleDirectoryReader類讀取文件。
讀取到文本后,使用SentenceSplitter將一個很長的文檔切分為若干塊。
每一塊設置的有token數(shù)和重疊token數(shù),在
可以自選,默認的chunk_size大小沒找到在哪,重疊的是200.
以上是庫的源碼實現(xiàn),我們調用是很簡單的。VAL_CORPUS_FPATH 我一開始以為是在load_corpus里的某個類自動保存,結果根本沒有。所以自己寫了導出為json的函數(shù),是將其text數(shù)據保存了。
# 源文件 列表
my_list = [i for i in os.listdir('project_2/data') if i.endswith('pdf')]
# 隨機抽取70%的數(shù)據,作為訓練集
random.shuffle(my_list) # 打亂
num_to_sample = int(len(my_list) * 0.7) # 閾值
# 構造本地文件路徑
training_set = [f"project_2/data/{file}" for file in my_list[:num_to_sample]] # 訓練集文件list
validation_set = [f"project_2/data/{file}" for file in my_list[num_to_sample:]] # 驗證集文件list# 最終形成的訓練和驗證語料
TRAIN_CORPUS_FPATH = 'project_2/data/corpus/train_corpus.json'
VAL_CORPUS_FPATH = 'project_2/data/corpus/val_corpus.json'# 讀取pdf數(shù)據,節(jié)點
def load_corpus(files, verbose=False):if verbose:print(f"正在加載文件 {files}")reader = SimpleDirectoryReader(input_files=files)docs = reader.load_data()if verbose:print(f"已加載 {len(docs)} 個文檔")parser = SentenceSplitter()nodes = parser.get_nodes_from_documents(docs, show_progress=verbose)if verbose:print(f"已解析