生成式AI 的爆發(fā)元年
一、AI導(dǎo)致的工作流變化
在最近這段時間內(nèi)我們已經(jīng)見證了AI在各行各業(yè)產(chǎn)生的巨大影響。在技術(shù)領(lǐng)域,AI工具已經(jīng)成為一股不可忽視的力量,為程序員、數(shù)據(jù)分析師和設(shè)計師等技術(shù)人員提供了強大的輔助功能。
在編程方面,基于人工智能的代碼補全工具如GitHub Copilot可以極大地幫助開發(fā)者提高編程效率。而在GPT4公布以后Copilot也發(fā)布了自己的升級版本即 GitHub Copilot X,它不僅繼承了原有的代碼補全功能,還圍繞 AI 對話、Pull Request 提交處理、文檔智能檢索與閱讀、命令行改造、代碼審查和質(zhì)量分析甚至是語音生成代碼等功能進(jìn)行了全方位的升級。
▲ 圖1 GitHub Copilot X新功能[2]
上述工具需要付費或者加入waiting list等待才可以拿到體驗資格,所以如果你想獲得類似的智能工具體驗也可以直接使用Cursor這樣免費的IDE工具,據(jù)官方說這是一個基于gpt4接口開發(fā)的簡易IDE(實際體驗下來應(yīng)該還是GPT3.5),能力同樣足夠強悍,它可以支持用GPT給你寫代碼,也可以支持圍繞你的代碼項目工程問任何問題,并進(jìn)行改進(jìn)。
▲ 圖2 Cursor功能演示[3]
在數(shù)據(jù)分析領(lǐng)域,AI工具也發(fā)揮著重要作用。近期許多證券公司同樣參與到了chatGPT這個熱潮中,不管是直接借助OpenAI的API調(diào)用還是自研小型的GPT類模型,AI技術(shù)可以幫助分析師高效地總結(jié)和歸納研究報告。通過AI技術(shù)進(jìn)行文本分析和自然語言處理,可以提高信息處理速度,減輕人力負(fù)擔(dān),從而為證券公司帶來更多便利。在筆者深度體驗chatGPT一段時間后,的確發(fā)現(xiàn)它的信息歸納總結(jié)能力非常出色,像目前就有許多利用chatGPT的能力對文獻(xiàn)進(jìn)行快速總結(jié)的工具比如chatPDF,你只需要上傳一個PDF文件就可以基于此進(jìn)行諸多提問。
▲ 圖3 chatPDF功能演示[4]
在設(shè)計領(lǐng)域,AI工具同樣大放異彩,不過那里的主角是擴(kuò)散模型。例如,DALL-E這樣的AI生成器,可以根據(jù)用戶提供的文本描述,生成相應(yīng)的圖像;除此之外也有像Midjourney這樣已經(jīng)非常完善的產(chǎn)品;在開源社區(qū),這里的生態(tài)也不亞于chatGPT,基于開源的Stable Diffusion模型以及各種插件和Lora小模型所形成的解決方案已經(jīng)非常完善,設(shè)計師們完全可以基于AI輔助進(jìn)行工作。而就在我寫下這篇文章的時間點,基于擴(kuò)散模型、Controlnet以及Segment-Anything[1]的開源工具已經(jīng)出現(xiàn)了。
▲ 圖4 Sample1-Edit Anything[5]
沒什么感覺?再來一張感受一下:
▲ 圖5 Sample2-Edit Anything[5]
總之,AI工具在技術(shù)領(lǐng)域的應(yīng)用正變得越來越廣泛和深入,它們已經(jīng)對程序員、數(shù)據(jù)分析師和設(shè)計師等技術(shù)人員的工作流產(chǎn)生了重大影響?;叵肓艘幌伦罱易约涸诠ぷ魃厦娴牧鞒套兓?,首先是使用搜索引擎的頻率大大降低,對于自己不熟悉的領(lǐng)域會優(yōu)先使用chatGPT來進(jìn)行提問學(xué)習(xí),然后再實際驗證準(zhǔn)確性;編程方面雖然沒有使用Github Copilot(基于安全以及隱私的考慮),但是我們私有化的代碼智能補全工具同樣可以提升我的編碼效率,在擴(kuò)散模型方面雖然我沒有設(shè)計方面的需求,但是在開發(fā)IDE插件并發(fā)布到插件市場前,我使用它進(jìn)行l(wèi)ogo的生成,生成效果的確不賴。
▲ 圖6 Acepilot logo由擴(kuò)散模型生成
二、LLM模型實踐
現(xiàn)在開源社區(qū)有許多類chatGPT的開源實現(xiàn)方案:
■ 駱駝(Luotuo): 開源中文大語言模型[8]
■ Vicuna: 號稱能達(dá)到90% ChatGPT質(zhì)量的開源模型[9]
■ Koala:經(jīng)過在網(wǎng)絡(luò)上收集的對話數(shù)據(jù)并基于Meta的LLaMA微調(diào)訓(xùn)練的模型 [10]
■ Baize:Baize是由Lora技術(shù)訓(xùn)練的開源模型[11]
這些開源方案中所使用的模型都集中在100億參數(shù)量附近,對LLM來說這已經(jīng)是非常輕量化的模型參數(shù)量了,但是即便訓(xùn)練這些輕量模型(包括使用Lora的方案)也需要耗費我們許多算力。在之前的?文章中提到過,我們基于Codegen代碼生成模型進(jìn)行了實踐,并且陸續(xù)開發(fā)了IDE插件供研發(fā)人員使用體驗,最終形成了私有化部署的代碼智能補全工具。后續(xù)隨著工作的持續(xù)開展我們優(yōu)化了模型的生成效果,模型的參數(shù)量也從27億參數(shù)量提升到了60億參數(shù)量,但是對模型進(jìn)行調(diào)優(yōu)和實際優(yōu)化部署時都碰到了許多問題,因此光有模型并沒有用,你需要有模型持續(xù)迭代優(yōu)化的能力和資源,在模型部署上也需要有完善的模型加速手段。
1.模型訓(xùn)練
由于當(dāng)時在進(jìn)行代碼智能補全工具的體驗時許多前端的同事都覺得它在Vue上的補全效果并不理想,因此我們爬取了Github上40個優(yōu)質(zhì)的Vue項目并進(jìn)行了數(shù)據(jù)上的預(yù)處理,因為計算資源有限,我們基于此數(shù)據(jù)首先在2.7Billion參數(shù)量的模型上進(jìn)行了調(diào)優(yōu)嘗試。
▲ 圖7 27億參數(shù)量模型微調(diào)
這是一個失敗的嘗試,雖然微調(diào)過后的模型的確在Vue上的生成效果有了提升,但是在我們使用了自己收集和構(gòu)建的多語言版本的HumanEval數(shù)據(jù)集進(jìn)行測試發(fā)現(xiàn),微調(diào)后的模型在其他語言上效果是有下降的,這并不符合我們的初衷。然后在測試原版的CodeGen 60億參數(shù)量模型的效果時我們發(fā)現(xiàn)在Vue上它也比微調(diào)過后的27億參數(shù)量模型更加優(yōu)秀,至于其他語言就完全無需比較了。
但是這的確給我們優(yōu)化LLM積累了一些經(jīng)驗和思考。首先是計算資源消耗方面,即使是27億參數(shù)量的模型我們也至少需要兩張32GB的V100顯卡才能比較有效率地微調(diào)我們的模型,在使用分布式訓(xùn)練框架DeepSpeed 在不同的優(yōu)化策略需要的顯存和內(nèi)存占用如下:
如果我們需要微調(diào)的是60億參數(shù)量的模型,那至少需要4張32GB顯存的V100顯卡才能滿足算力的需求。另外是模型訓(xùn)練的方式上我們還是采用了普通的微調(diào)方法,使用普通微調(diào)方法的好處是對數(shù)據(jù)的質(zhì)量要求沒有那么高,也不需要復(fù)雜的數(shù)據(jù)處理。如果我們收集足夠多的數(shù)據(jù)并把數(shù)據(jù)處理成指令微調(diào)的形式進(jìn)行訓(xùn)練那樣會對模型的生成效果有一個比較大的提升。
2.模型部署
計算圖優(yōu)化:計算圖是用于表示神經(jīng)網(wǎng)絡(luò)中各層之間連接關(guān)系的有向圖。在模型部署階段,計算圖優(yōu)化可以通過剪枝、融合和重排等操作減少計算量和內(nèi)存占用。剪枝是指移除網(wǎng)絡(luò)中不重要的權(quán)重或神經(jīng)元,以減小模型的體積。融合是將多個操作合并為一個操作,以減少計算量。重排是調(diào)整計算圖中操作的順序,以減少內(nèi)存訪問和數(shù)據(jù)傳輸。通過這些優(yōu)化手段,計算圖優(yōu)化可以在保持模型精度的同時,提高模型在不同硬件平臺上的性能。
其他部署技術(shù):除了模型量化和計算圖優(yōu)化外,還有其他一些技術(shù)可以提高模型部署效果。例如,模型壓縮可以進(jìn)一步減小模型體積,加快加載速度。還可以通過使用高性能的深度學(xué)習(xí)庫(如TensorRT、OpenVINO等)來提高模型在特定硬件上的性能。
三、總結(jié)與思考
相信大多數(shù)人都已經(jīng)感受到AI工具在各行各業(yè)產(chǎn)生了影響,作為技術(shù)人員我們需要不斷地?fù)肀ё兓W(xué)習(xí)新技能和方法,以充分利用AI所帶來的好處。同時我們也需要認(rèn)識到當(dāng)前AI技術(shù)存在的局限性,即使是GPT4,在進(jìn)行很長一段深度使用后我還是可以非常自信地說讓它來代替程序員還太早了??偟膩碚f:
1. 提高效率:AI類工具可以幫助技術(shù)人員更快地完成任務(wù),如代碼智能補全工具在提高編碼效率方面。通過使用先進(jìn)的AI算法,開發(fā)人員可以減少編碼時間,提高生產(chǎn)力,這使得他們可以將更多的時間和精力投入到其他關(guān)鍵任務(wù)上,如設(shè)計架構(gòu)、調(diào)試和優(yōu)化上。
2. 創(chuàng)新與拓展:LLM的火爆給AI領(lǐng)域的從業(yè)人員提供了新的機會和挑戰(zhàn)。例如,如何利用有限的計算資源盡可能高效地訓(xùn)練模型以及在模型部署技術(shù)、模型加速方面的持續(xù)探索,這可以推動整個領(lǐng)域內(nèi)的技術(shù)創(chuàng)新。
3. 適應(yīng)性與持續(xù)學(xué)習(xí):隨著AI技術(shù)的不斷發(fā)展,技術(shù)人員需要不斷適應(yīng)并掌握新的工具和方法。這要求他們具備持續(xù)學(xué)習(xí)的能力,以便跟上行業(yè)的發(fā)展趨勢。
4. 人工智能與人類協(xié)同:雖然AI工具在許多方面都有顯著的優(yōu)勢,但在某些情況下,人類的專業(yè)知識和創(chuàng)造力仍然不可替代。因此,技術(shù)人員需要學(xué)會與AI工具協(xié)同工作,充分利用它們的優(yōu)勢,同時發(fā)揮自己的專業(yè)能力,共同實現(xiàn)更高質(zhì)量和效率的工作成果。
參考文獻(xiàn)
[1]GPT4
[2] Introducing GitHub Copilot X
[3] Cursor | Build Fast
[4] ChatPDF - Chat with any PDF!
[5] sail-sg/EditAnything: Edit anything in images powered by segment-anything, ControlNet, StableDiffusion, etc.
[6] MindSpore量化算法概述
[7] M. Shoeybi, M. Patwary, R. Puri, P. LeGresley, J. Casper, and B. Catan-
zaro, “Megatron-lm: Training multi-billion parameter language modelsusing model parallelism,” arXiv preprint arXiv:1909.08053, 2019.
[8] https://github.com/LC1332/Luotuo-Chinese-LLM
[9] https://github.com/lm-sys/FastChat
[10] https://bair.berkeley.edu/blog/2023/04/03/koala
[11] https://github.com/project-baize/baize-chatbot
本文轉(zhuǎn)載自 ??AI遇見云??,作者: 張宇博
