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