1. 性能提升,星辰AI大模型TeleChat-12B評(píng)測(cè)

        共 4888字,需瀏覽 10分鐘

         ·

        2024-05-04 21:49

        0x0. 前言

        2月份的時(shí)候評(píng)測(cè)過(guò)TeleChat-7B大模型,見星辰AI大模型TeleChat-7B評(píng)測(cè)。最近中電信 AI 科技有限公司針對(duì)TeleChat-7B進(jìn)行了性能升級(jí),并開源了一個(gè)更大的模型TeleChat-12B,受邀對(duì)這個(gè)大模型進(jìn)行新的評(píng)測(cè)。本文主要關(guān)注TeleChat-7B在做一些文學(xué)創(chuàng)作和代碼生成方面相比于TeleChat-7B的提升。TeleChat-7B不僅在模型結(jié)構(gòu)上有所微調(diào),而且相比于TeleChat-7B的1.5T Tokens,TeleChat-12B使用了3T Tokens進(jìn)行預(yù)訓(xùn)練,取得了更好的性能結(jié)果。下面紅框部分是TeleChat-12B相比于TeleChat-7B在通用能力,推理和代碼能力,語(yǔ)言理解能力等維度的數(shù)據(jù)集上的性能提升:

        在這里插入圖片描述

        0x1. TeleChat-12B相比于TeleChat-7B的差異點(diǎn)

        TeleChat-12B和TeleChat-7B均開源在https://github.com/Tele-AI/Telechat這個(gè)倉(cāng)庫(kù)中,并且在Huggingface,ModelScope等大模型托管平臺(tái)進(jìn)行托管,另外還開源了int8和int4兩種低比特類型的模型方便部署。這里著重說(shuō)明一下TeleChat-12B和TeleChat-7B的差異之處:

        • 數(shù)據(jù)方面,TeleChat-12B使用了3T tokens進(jìn)行預(yù)訓(xùn)練,而TeleChat-7B則只用了1.5T tokens。
        • 在模型結(jié)構(gòu)方面,相比TeleChat-7B模型,TeleChat-12B模型采用了詞嵌入層與輸出層解耦的結(jié)構(gòu),將詞嵌入層和輸出lm head層參數(shù)分開,有助于增強(qiáng)訓(xùn)練穩(wěn)定性和收斂性。
        • 在訓(xùn)練方法方面,TeleChat-12B訓(xùn)練時(shí)使用更科學(xué)的數(shù)據(jù)配比學(xué)習(xí)與課程學(xué)習(xí)的方法,使用小參數(shù)模型在多種數(shù)據(jù)配比的數(shù)據(jù)上擬合,得到對(duì)各個(gè)數(shù)據(jù)集難度的先驗(yàn)估計(jì);訓(xùn)練過(guò)程中每隔一段時(shí)間自動(dòng)化評(píng)估當(dāng)前模型在所有數(shù)據(jù)集上的loss,以及在評(píng)測(cè)集上的生成效果,動(dòng)態(tài)提升較難學(xué)習(xí)的數(shù)據(jù)集權(quán)重,保證模型在各個(gè)數(shù)據(jù)集上都有較佳的擬合效果。
        • 后續(xù)通過(guò)對(duì)比TeleChat-7B和TeleChat-12B在文創(chuàng)和代碼方面的一些例子可以發(fā)現(xiàn)TeleChat-12B在指令跟隨,幻覺(jué),補(bǔ)全文本的指令以及代碼創(chuàng)作上都有較大提升。

        0x2. 環(huán)境配置

        可以使用官方提供的Docker鏡像,也可以自己按照 https://github.com/Tele-AI/Telechat/blob/master/requirements.txt 來(lái)配置。我這里是直接使用了官方的鏡像,基本沒(méi)踩什么坑,按照 https://github.com/Tele-AI/Telechat/blob/master/docs/tutorial.md 這個(gè)教程操作就可以。

        0x3. 文學(xué)創(chuàng)作能力測(cè)試

        為了更加真實(shí)的觀察模型的文學(xué)創(chuàng)作能力,這里不使用TeleChat官方開源倉(cāng)庫(kù)提供的例子,而是使用我們自己的一些prompt來(lái)進(jìn)行測(cè)試。其中部分例子取自:https://github.com/SkyworkAI/Skywork#chat%E6%A8%A1%E5%9E%8B%E6%A0%B7%E4%BE%8B%E5%B1%95%E7%A4%BA 。然后來(lái)關(guān)注TeleChat-7B和TeleChat-13B的輸出結(jié)果,測(cè)試代碼為:

        import os
        import torch
        from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
        os.environ["CUDA_VISIBLE_DEVICES"] = '0'
        question="通過(guò)對(duì)“紅樓夢(mèng)中的人,都散在眼前”的理解,嘗試創(chuàng)作一首描繪夢(mèng)境與現(xiàn)實(shí)的五言律詩(shī)。"
        print('==============Prompt===================')
        print(question)
        print('==============TeleChat-7B==============')
        tokenizer = AutoTokenizer.from_pretrained('/bbuf/telechat-7B/', trust_remote_code=True,)
        model = AutoModelForCausalLM.from_pretrained('/bbuf/telechat-7B/', trust_remote_code=True, device_map="auto", torch_dtype=torch.float16)
        generate_config = GenerationConfig.from_pretrained('/bbuf/telechat-7B/')

        answer, history = model.chat(tokenizer = tokenizer, question=question, history=[], generation_config=generate_config, stream=False)
        print(answer)

        print('==============TeleChat-12B==============')

        tokenizer = AutoTokenizer.from_pretrained('/mnt/data/cangshui/bbuf/TeleChat-12B/', trust_remote_code=True,)
        model = AutoModelForCausalLM.from_pretrained('/mnt/data/cangshui/bbuf/TeleChat-12B/', trust_remote_code=True, device_map="auto", torch_dtype=torch.float16)
        generate_config = GenerationConfig.from_pretrained('/mnt/data/cangshui/bbuf/TeleChat-12B/')
        answer, history = model.chat(tokenizer = tokenizer, question=question, history=[], generation_config=generate_config, stream=False)
        print(answer)

        另外我還做了一個(gè)改動(dòng),把兩個(gè)模型文件夾下的generation_config.json里面的do_sample都改成了true,讓結(jié)果更加豐富。

        針對(duì)相同的輸入prompt分別使用7b和12b的模型進(jìn)行推理,對(duì)比輸出結(jié)果。

        • 詩(shī)詞創(chuàng)作

        測(cè)試一下寫詩(shī),發(fā)現(xiàn)TeleChat-7B和TeleChat-12B模型在詩(shī)詞創(chuàng)作方面的能力都比較有限,雖然可以生成一些和prompt描述相關(guān)的文字,但是對(duì)五言,七言等詩(shī)歌形式往往不能正常理解??赡芎蛿?shù)據(jù)里面沒(méi)有特意微調(diào)這種情況有關(guān)系。

        • 廣告文案
        在這里插入圖片描述

        從這幾個(gè)例子可以看到TeleChat-12B的指令跟隨能力比7B要更好一些,并且輸出的內(nèi)容質(zhì)量也更高。

        • 作文生成 (上面2張圖是一個(gè)prompt)

        上面寫了2篇作文,看起來(lái)12B的模型也是比7B的表現(xiàn)更好,重要的是對(duì)于字?jǐn)?shù)的判斷12B模型更加準(zhǔn)確,而7B模型似乎忽略了prompt里面字?jǐn)?shù)限制的指令。

        • 演講稿生成

        上面兩張圖是同一個(gè)prompt。

        TeleChat-12B的創(chuàng)作質(zhì)量相比于TeleChat-7B明顯更高。

        • 心得體會(huì)
        在這里插入圖片描述

        上面三張圖是一個(gè)prompt的輸出。

        上面兩張圖是一個(gè)prompt的輸出。

        同樣,TeleChat-12B的創(chuàng)作質(zhì)量相比于TeleChat-7B明顯更高,并且更加豐富,對(duì)于發(fā)明專利寫得更專業(yè)。

        • 記錄文

        上面兩張圖片是同一個(gè)prompt的輸出。

        總的來(lái)說(shuō),在文學(xué)創(chuàng)作方面,TeleChat-12B相比于TeleChat-7B無(wú)論是在質(zhì)量還是指令跟隨上都更好一些,可以獲得更好的創(chuàng)作效果。

        0x4. 代碼能力對(duì)比測(cè)試

        • Python中的深拷貝和淺拷貝有什么區(qū)別?請(qǐng)用代碼示例解釋這兩種拷貝方式。

        對(duì)于深淺拷貝,TeleChat-7B的答案完全錯(cuò)誤,而TeleChat-12B的答案則更靠譜,指出了淺拷貝是副本共享內(nèi)部對(duì)象的引用,而深拷貝的副本不共享內(nèi)部對(duì)象的引用,但在對(duì)比的時(shí)候代碼注釋仍然有個(gè)小錯(cuò)誤。

        • 如何合并兩個(gè)已排序的數(shù)組?編寫一個(gè)函數(shù),將兩個(gè)已排序的整數(shù)數(shù)組合并為一個(gè)排序后的數(shù)組。

        • 判斷一個(gè)數(shù)是否為質(zhì)數(shù)。編寫一個(gè)函數(shù),判斷給定的整數(shù)是否是質(zhì)數(shù),并考慮優(yōu)化算法的效率。

        相比于TeleChat-7B的答案。TeleChat-12B提供了兩種方法并指明了第二種方法的時(shí)間復(fù)雜度更小,回答的質(zhì)量更高。

        • c++編寫一個(gè)函數(shù),將字符串中所有指定的單詞替換為另一個(gè)單詞。

        對(duì)于這個(gè)問(wèn)題,TeleChat-12B可以正確理解并給出解決方案,而TeleChat-7B的答案是錯(cuò)誤的。

        通過(guò)上述一些編程問(wèn)題,可以發(fā)現(xiàn)TeleChat-12B在編程能力上相比于TeleChat-7B有較大提升,這種提升的原因大概率是新增的1.5T數(shù)據(jù)包含了部分代碼數(shù)據(jù)。

        0x5. 總結(jié)

        本文通過(guò)對(duì)比TeleChat-7B和TeleChat-12B在文創(chuàng)和代碼方面的一些例子可以發(fā)現(xiàn)TeleChat-12B在指令跟隨,幻覺(jué),補(bǔ)全文本的指令以及代碼創(chuàng)作上都有較大提升。希望后續(xù)能持續(xù)在網(wǎng)絡(luò)結(jié)構(gòu),數(shù)據(jù)方面做出改進(jìn),做出更強(qiáng)的開源模型。


        瀏覽 105
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲噜噜噜噜噜噜 | 色婷婷播放| 国产视频一区二区三区四 | 日韩无码一卡 | 91精品视频国产 |