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