近日,虎博科技滿懷誠意地發(fā)布TigerBotV2,涉及基座模型、chat模型、產(chǎn)品升級、 TigerBot-API升級等多個方面的更新。此次,虎博科技將同步共享TigerBot發(fā)布的具體內(nèi)容和訓練過程中的一些科學和工程的探索結(jié)果,與大模型開發(fā)者們一同推動AIGC的繁榮。 如想率先體驗虎博科技TigerBot的新版本,可通過以下地址前往: TigerBot demo 在線體驗:https://tigerbot.com/chat Github 項目:https://github.com/Tigerye/TigerBot 更新一:基座模型經(jīng)評測已超部分主流開源模型近30% 虎博科技的TigerBot-7b-base-v2(基座模型)在1.5TB多語言數(shù)據(jù)上充分訓練,千卡耗時一個月,投入算力成本約300萬,在OpenAI采用的公開NLP7項任務(wù)評測中,超過同等LLaMA、Bloom等主流開源模型達15%-30%。虎博科技團隊認為,TigerBot的base-v2是業(yè)內(nèi)同等大小模型里能力最強的base model之一,適合各領(lǐng)域開發(fā)者以此為基礎(chǔ)繼續(xù)預(yù)訓練或者監(jiān)督微調(diào)。 圖1:虎博科技TigerBot-7b-base-v2在public NLP 7 tasks evaluation performance 圖2:虎博科技TigerBot-7b-base-v2預(yù)訓練數(shù)據(jù)分布 圖3:虎博科技TigerBot-7b-base-v2預(yù)訓練loss收斂曲線 更新二:chat模型經(jīng)9項公開語料測評,效果提升 9.3% 使用虎博科技TigerBot-7b-base-v2經(jīng)過有監(jiān)督微調(diào)的chat model,在2000萬(20G)高質(zhì)量清洗和配比的微調(diào)指令數(shù)據(jù)集上充分訓練,在9項公開語料next-token prediction accuracy測評上優(yōu)于TigerBot-7b-sft-v1版本9.3%,loss drop by 35%。虎博科技團隊認為,TigerBot-7b-sft-v2是業(yè)內(nèi)同等大小模型里能力最強的chat model之一,適合各領(lǐng)域應(yīng)用開發(fā)者以此為基礎(chǔ)開發(fā)問答、摘要、生成等任務(wù)的應(yīng)用。 圖4:虎博科技TigerBot-7b-sft-v2在public NLP 9 tasks evaluation performance 圖5:虎博科技TigerBot-7b-sft-v2訓練數(shù)據(jù)分布 圖6:虎博科技TigerBot-7b-sft-v2訓練loss收斂曲線 TigerBot-7b-sft-v2的chat樣例如下所示: 圖7:虎博科技TigerBot chat展示 更新三:產(chǎn)品升級——搜索模式和流式生成提升體驗感 產(chǎn)品方面,因新版開啟了搜索模式和流式生成,使用虎博科技的TigerBot產(chǎn)品也有了新的體驗。虎博科技結(jié)合了互聯(lián)網(wǎng)搜索和工具(如天氣,股價,計算器等),打開了LLM+Search的應(yīng)用場景,適合有實時信息查詢需求的應(yīng)用。同時開放的chat-api也支持搜索和流式模式的開關(guān),如下圖所示: 圖8: 虎博科技TigerBot搜索模式頁面示例 更新四:TigerBot-API升級,更多調(diào)用選擇 虎博科技全面升級TigerBot-API,讓使用者有了更多工具選擇。虎博科技開放出LLM應(yīng)用開發(fā)常用的工具,通過簡單的API調(diào)用即可快速實現(xiàn)相關(guān)應(yīng)用。API包括LLM下的chat, plugin, finetune,Text下的embedding, summarization, pdf2text, Visio下的text2image。API使用示例如下展示: 圖9: 虎博科技TigerBot-API示例展示 TigerBotV2訓練中的科學與工程探索 1.data quality or data volume ? 虎博科技創(chuàng)始人陳燁始終堅信數(shù)據(jù)的質(zhì)量比數(shù)據(jù)的數(shù)量更重要,尤其是中文網(wǎng)絡(luò)數(shù)據(jù),TigerBot模型是在v1基礎(chǔ)上繼續(xù)預(yù)訓練。虎博科技團隊通過實驗發(fā)現(xiàn),模型本身有很強的學習和記憶能力,少到數(shù)十條低質(zhì)量的數(shù)據(jù)就會讓模型學到,導(dǎo)致不理想的回答風格。這里的低質(zhì)量數(shù)據(jù)包括:網(wǎng)絡(luò)口語詞、社區(qū)論壇等的jargon、敏感和有害的內(nèi)容(harmness)、廣告類、格式不規(guī)范的內(nèi)容。虎博科技團隊通過規(guī)則和模型過濾掉~10%的低質(zhì)量數(shù)據(jù)。其中針對敏感、涉黃、不符合主流價值觀的內(nèi)容,虎博團隊選擇用三個SOTA內(nèi)容審核模型ensemble來過濾。 虎博科技團隊采用以下步驟和算法清洗數(shù)據(jù),以在O(n^2)的復(fù)雜度下獲得高質(zhì)量數(shù)據(jù): (1)先用規(guī)則去掉雜亂數(shù)據(jù),例如instruction全是標點符號或者數(shù)字的, (2)然后使用exactstring match去重, (3)再用sequence simhash + longest common substring去重, (4)去重后利用SOTA審核模型去掉謾罵色情涉政的數(shù)據(jù)。 2. more epoch or more data ? 在高質(zhì)量數(shù)據(jù)的基礎(chǔ)上,模型的學習能力使得1-2epoch就能概率上學到數(shù)據(jù)中的知識和指令,所以虎博科技團隊把有限的算力讓模型去學習更多更豐富的知識和任務(wù)類型。在虎博科技團隊的大部分實驗中,模型的training loss在一個epoch后就收斂到最終的水平,eval loss會在2-3個epoch后增長即overfitting。這個觀察也在bloom最初的預(yù)訓練中得到印證,bigscience團隊也是預(yù)訓練了一個epoch后拿到模型。 3.eval loss or more data ? 在public NLP data上的自動評測是快速實驗的基礎(chǔ),但自動評測多數(shù)是contextual QAtask,即有上下文的情況下,評測模型的總結(jié)抽取等能力,和最終用戶體感是有差異的。所以虎博科技團隊首先在7項(預(yù)訓練)和9項(監(jiān)督微調(diào))的public NLP benchmark上自動評測,以保證模型的綜合能力(知識深度),然后從自動評測最高的三個模型中選擇看過最多訓練數(shù)據(jù)的模型(知識廣度)。 4.important hyperparameters 虎博科技團隊通過大量實驗,發(fā)現(xiàn)重要的訓練參數(shù)包括:learning rate (LR), (global) batch size, adam regularizers (alpha, beta)。最優(yōu)的參數(shù)沒有理論結(jié)果,也是數(shù)據(jù)和基座模型的函數(shù)。虎博科技團隊先用較小的training/eval dataset上(e.g., 1% random sample),快速geometric search找到超參的范圍;然后在全集training/eval dataset上geometric search到最佳超參。百億量級的模型的監(jiān)督微調(diào)在綜合任務(wù)數(shù)據(jù)集上的best-practice global batch是512-2048,LR是1e-5 - 2e-5,warmup fixed LR;而千億參數(shù)模型訓練在2epoch之后會有l(wèi)oss explosion現(xiàn)象,所以虎博團隊配合adam regularizer (beta2=0.95),和warmup cosine LR schedule。 self-evoluation 虎博科技團隊在預(yù)訓練數(shù)據(jù)中混合入10%的監(jiān)督微調(diào)數(shù)據(jù),用非監(jiān)督的格式。背后的直覺是預(yù)訓練讓模型專注基礎(chǔ)知識p(t_n | t_n-1…),監(jiān)督學習讓模型專注指令完成p(response | instruction)。在sft的訓練過程中,大部分的gradient會指向完成指令的方向,因為數(shù)據(jù)中的基礎(chǔ)知識已經(jīng)在預(yù)訓練中學習過。這就是虎博科技團隊讓模型自我進化的思想(self-evoluation),這和人類循序漸進的學習知識一個原理;比如,NLP的學生總是先學好各種概率分布,然后再學習在各種任務(wù)數(shù)據(jù)中的應(yīng)用,打好基礎(chǔ),事半功倍。 6.generation configs 在測評和上線模型的過程中,虎博科技團隊發(fā)現(xiàn)是否使用解碼cache(config.json, generation_config.json in model checkpoint folder)對生成結(jié)果的一致性和性能有影響(輸入輸出token數(shù)分別為1024和100的情況下,使用cache的模型qps值約是不使用的7.7倍)。 虎博的模型基于decoder架構(gòu),可以緩存生成過程中每個attention計算使用的key/value投影結(jié)果,只增量計算每個新token與歷史token的attention,從而將生成每個token時的softmax計算復(fù)雜度由O(n*n)降低為O(n*1)。但是否使用cache,會導(dǎo)致是否有額外的mask value參與softmax計算,因此在不同的硬件環(huán)境和不同計算精度下,cache可能會導(dǎo)致生成結(jié)果的微小差異。虎博科技團隊在自動評測中確定use_cache=true or false,測評結(jié)果一致,因此chat web和api都設(shè)置為use_cache=true,以保證響應(yīng)最快的用戶體驗。 圖10:use_cache vs. response time |