當前位置: 妍妍網 > 碼農

七天入門LLM大模型 | 第一天:魔搭社群和LLM大模型基礎知識

2024-03-21碼農

七天入門LLM大模型學習課程

七天入門 LLM大模型學習 是ModelScope魔 搭社群推出的大模型課程,旨在幫助初學者理解和學習LLM的基礎概念和實踐。課程大綱安排如下:

未來七天, 社群將每天 為大家 推出一篇 課程內容 ,感興趣的小夥伴們可關註魔搭社群自取使用 哦。

#01

魔搭LLM大模型開源生態圖

近一年來,大語言模型(LLM)成為為全球科技與社會關註的焦點,公眾對這類模型 所蘊含的先進技術及其廣泛套用有了更為深入的認知。 關於LLMs是否應采取開源策略的話題引發了廣泛的 熱議和深度探討。 魔搭ModelScope社群在過去的一年中,積極推動開 源模型的發展,魔搭社 區通 過開源推動模型貢獻者的研究成果的透明度提升和可復制性 的強化,同時激發中國研究者和開發者社群的集體創新潛能。

LLM專題頁:

https://modelscope.cn/topic/dfefe5be778b49fba8c44646023b57ba/pub/summary

基礎模型研究

2023年,隨著LLM技術的發展,中國模型研究機構的開源模型迎來了爆發式的增長:

2023年3月,智譜AI首先在魔搭社群釋出了ChatGLM-6B系列,ChatGLM-6B 是一個開源的、支持中英雙語問答的對話語言模型,基於 General Language Model (GLM) 架構,具有 62 億參數。結合模型量化技術,使用者可以在消費級的顯卡上進行本地部署(INT4 量化級別下最低只需 6GB 視訊記憶體)。現在,智譜AI的ChatGLM-6B已經更新到第三代,同時在多模態推出了CogVLM系列,以及支持視覺agent的CogVLM,在程式碼領域推出了CodeGeex系列模型,同時在agent和math均有探索和開源的模型和技術。

2023年6月,百川首先在魔搭社群釋出了百川-7B模型,baichuan-7B是由百川智慧開發的一個開源的大規模預訓練模型。基於Transformer結構,在大約1.2萬億tokens上訓練的70億參數模型,支持中英雙語,上下文視窗長度為4096。百川也是較早推出預訓練模型的公司,並戲稱給開發者提供更好的「毛坯房」,讓開發者更好的「裝修」,推動了國內基於預訓練base模型的發展。後續百川釋出了13B模型,以及百川2系列模型,同步開源base和chat兩個版本。

2023年7月,上海人工智慧實驗室在WAIC 2023開幕式和科學前沿全體會議上,聯合多家機構釋出全新升級的「書生通用大模型體系」,包括書生·多模態、書生·浦語和書生·天際等三大基礎模型,以及第一個面向大模型研發與套用的全鏈條開源體系。上海人工智慧實驗室不僅做了模型weights的開源,還在模型、數據、工具和評測等層面進行全方位開源,推動技術創新與產業進步。後續上海人工智慧實驗室陸續釋出了書生·浦語20B模型,以及書生·靈筆多模態模型。

2023年8月,阿裏巴巴開源了通義千問7B模型,後續相繼開源了1.8B,14B,72B的base和chat模型,並提供了對應的int4和int8的量化版本,在多模態場景,千問也開源了qwen-vl和qwen-audio兩種視覺和語音的多模態模型,做到了「全尺寸、全模態」開源,Qwen-72B提升了開源大模型的尺寸和效能,自釋出以來一直維持在各大榜單榜首,填補了國內空白。基於Qwen-72B,大中型企業可開發商業套用,高校、科研院所可開展AI for Science等科研工作。

2023年10月,昆侖萬維釋出百億級大語言模型「天工」Skywork-13B系列,並罕見地配套開源了600GB、150B Tokens的超大高品質開源中文數據集Skypile/Chinese-Web-Text-150B 數據集。由昆侖經過精心過濾的數據處理流程從中文網頁中篩選出的高品質數據。大小約為600GB,總token數量約為(1500億),是目前最大得開源中文數據集之一。

2023年11月,01-AI 公司釋出了 Yi 系列模型,其參數規模介於 60 億至 340 億之間,訓練數據量達到了 300 億token。這些模型在公開排行榜(如 Open LLM leaderboard)以及一些極具挑戰性的基準測試(例如 Skill-Mix)中的表現,均超過了之前的模型。

模型客製新範式

效能卓越的模型和行業客製模型通常需要在預訓練模型上,透過數據進過多次微調得來的。過去的一年中,來自社群的貢獻者透過模型微調的方式,持續在各個方向做探索,並回饋社群,貢獻了更加繁榮的行業模型生態。

IDEA Lab釋出的姜子牙通用大模型是基於LLaMa的130億參數的大規模預訓練模型,具備轉譯,編程,文本分類,資訊抽取,摘要,文案生成,常識問答和數學計算等能力。

OpenBuddy致力於面向全球使用者提供強大的多語言聊天模型,強調對話式AI對英語、中文和其他語言的無縫多語言支持。

Codefuse和wisdomshell專註於程式碼領域,希望提升開發者效率,讓程式碼使用更加簡單,在各類評測中,效果遠超基準。

FinGLM和通義金融模型,專註在金融領域,基於GLM模型和千問模型,提供了金融年報解讀,金融名詞解釋等金融行業垂直能力。

浙江大學,東北大學,大連理工,華東理工大學,南方科技大學,北京大學袁粒計畫組,香港中文大學openmmlab等高校實驗室透過微調預訓練模型,推動開源模型在司法行業,教育行業,醫療行業,視訊領域,全模態等方向發展。

#02

LLM型別介紹

Base模型和Chat模型

我們通常會看到某模型研發機構開源了base模型和chat模型,那base模型和chat模型有什麽區別呢?

首先,所有的大語言模型(LLM)的工作方式都是接收一些文本,然後預測最有可能出現在其後面的文本。

base模型 ,也就是基礎模型,是在海量不同文本上訓練出來的預測後續文本的模型。後續文本未必是對指令和對話的響應。

qwen-1.8B

chat模型 ,也就是對話模型,是在base基礎上透過對話記錄(指令-響應)繼續做微調和強化學習,讓它接受指令和使用者對話時,續寫出來的是遵循指令的,人類預期的assistant的響應內容。

qwen-1.8B-Chat

圖片來源:RAG vs Finetuning — Which Is the Best Tool to Boost Your LLM Application?

多模態模型

多模態LLM將文本和其他模態的資訊結合起來,比如影像、視訊、音訊和其他感官數據,多模態LLM接受了多種型別的數據訓練,有助於transformer找到不同模態之間的關系,完成一些新的LLM不能完成的任務,比如圖片描述,音樂解讀,視訊理解等。

圖片來源:ONELLM

Agent模型

LLM具備agent大腦的能力,與若幹關鍵元件協作,包括,

規劃(planning):子目標拆解,糾錯,反思和完善。

記憶(Memory):短期記憶(上下文,長視窗),長期記憶(透過搜尋或者向量引擎實作)

工具使用(tool use):模型學習呼叫外部API獲取額外的能力。


Code模型

Code模型在模型的預訓練和SFT中加入了更多的程式碼數據占比,在程式碼的一系列任務,比如程式碼補齊,程式碼糾錯,以及零樣本完成編程任務指令。同時,根據不同的程式碼語言,也會有python,java等更多的專業語言程式碼模型。

#03

使用LLM及最佳化LLM輸出效果

大語言模型是根據跨學科的海量的文本數據訓練而成的,這也讓大語言模型被大家認為最接近「AGI」的人工智慧。 然而,針對大語言模型,我們希望更好的使用LLM,讓LLM更好的遵循我們的指令,按照我們可控的方式和特定行業的知識輸出答案。

如下的兩種方式可以用來參考:

模型推理

模型推理指利用訓練好的模型進行運算,利用輸入的新數據來一次性獲得正確結論的過程。

來源:"understanding-how-llm-inference-works-with-llama-cpp"

參照圖,流程如下:

1. 分詞器將提示拆分為標記列表。根據模型的詞匯表,某些單詞可能會被拆分為多個標記。每個令牌都由一個唯一的數位表示。

2. 每個數位標記都會轉換為embedding向量。embedding向量是固定大小的向量,以 LLM 更有效處理的方式表示標記。所有embedding一起形成embedding矩陣。

3. 嵌入矩陣用作Transformer的輸入。Transformer 是一個神經網路,是LLM的核心。Transformer 由多層layer組成。每層都采用輸入矩陣並使用模型參數對其執行各種數學運算,最值得註意的是self-attention機制。該層的輸出用作下一層的輸入。

4. 最終的神經網路將 Transformer 的輸出轉換為logits。每個可能的下一個標記都有一個相應的 logit,它表示該標記是句子「正確」延續的機率。

5. 使用多種采樣技術之一從 logits 列表中選擇下一個標記。

6. 所選token作為輸出返回。要繼續生成token,請將所選令牌附加到步驟 (1) 中的令牌列表,然後重復該過程。這可以繼續下去,直到生成所需數量的token,或者 LLM 發出特殊的流 結束 (EOS) 令牌。

Prompt(提示詞)

prompt(提示詞)是我們和LLM互動最常用的方式,我們提供給LLM的Prompt作為模型的輸入,比如「使用李白的口吻,寫一首描述杭州的冬天的詩」,開源大模型引入了system訊息和人工prompt的概念,可以根據提示提供更多的控制。

few-shot prompt

透過在prompt中增加一些輸入和首選的優質輸出的範例,可以增強LLM的回答效果,更好的遵循我們的指令。但是更多的範例,會收到LLM的上下文視窗的限制,更多的token也會增加算力的消耗,也會影響LLM的響應速度。

LLM+RAG

大型語言模型 (LLM) 演示顯著的能力,但面臨諸如此類的挑戰:幻覺、過時的知識以及不透明、無法追蹤的推理過程。檢索增強生成 (RAG)透過整合來自外部資料庫的知識成為一個有前途的解決方案,這增強了模型的準確性和可信度,特別是對於知識密集型任務,並且允許知識的不斷更新和整合特定領域的資訊。RAG協同作用將LLM的內在知識與廣泛的、外部資料庫的動態儲存庫。

模型微調

微調是我們向開源的LLM的CKPT提供更多的數據,使他具備額外的知識,或者改變他的一些原來的生成結果。

微調會改變模型的權重,並可以更好的控制模型的生成結果。 對比few-shot prompting的方式,也可以解決透過few-shot prompting方式帶來的token消費高,模型響應速度慢,以及上下文視窗不夠的問題。

微調也會產生一些意向不到的結果,並有可能導致模型的通用能力下降,所以需要客觀的評估模型微調的結果。

魔搭社群提供了一站式微調框架:SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)。它整合了各種高效的微調方法,如LoRA、QLoRA、阿裏雲自研的ResTuning-Bypass等,以及開箱即用的訓練推理指令碼,使開發者可以在單張商業級顯卡上微調推理LLM模型。

模型量化

模型量化是使用低精度數據型別(例如 8 位整數 (int8))而不是傳統的 32 位浮點 (float32) 表示來表示模型中的權重、偏差和啟用的過程。透過這樣做,它可以明顯減少推理過程中的記憶體占用和計算需求,從而能夠在資源受限的裝置上進行部署。模型量化在計算效率和模型精度之間取得微妙的平衡。目前主要使用的LLM開源量化工具主要有:bnb,GPTQ,AWQ

float32到float16的過程-來源: LLM Series - Quantization Overview

模型評估

LLM評估技術是研究和改進LLM的關鍵環節。LLM的評估是一項復雜的任務,需要考慮多個方面的評估維度和任務型別,如文本對話、文本生成、多模態場景、安全問題、專業技能(coding/math)、知識推理等。

LLM評估通常可以人工評估和自動評估兩大類。其中,自動評估(Automatic evaluation)技術又可以分為rule-based和model-based的方式。其中,rule-based主要面向客觀題評價,評測題目通常包含標準答案;model-based方法主要用於評價主觀題,如復雜知識推理、多輪會話、文本生成等,透過專家模型(Expert model)來評價目標LLM的生成效果。

魔搭社群提供了一套LLM評估框架--LLMuses,專註於使用自動評估方法來評估LLM在各個 任務上的表現。其包含以下特性:

  • 輕量化,易於客製

  • 偏好設定豐富的評估指標

  • Model-based模式,提供多種評價模式(Single mode、Pairwise-baseline、Pairwise-all)

  • 視覺化報告

  • 模型推理加速和部署

    魔搭社群的大語言模型LLM支持將模型托管在伺服器或者雲上,並建立API介面或者Web套用提供給使用者與模型互動。

    魔搭社群提供了針對不同開發者的模型部署方案:

    1. Swingdeploy: 可以透過簡單的選擇0程式碼的方式,即可部署魔搭社群的模型到雲上並生成供應用程式使用的API介面,支持彈性擴縮容和按需呼叫。

    2. 阿裏雲PAI SDK: 魔搭社群和阿裏雲PAI產品合作,支持透過PAI的python SDK在雲上部署模型。

    3. vLLM推理加速: 魔搭社群和vLLM合作,支持更快更高效的LLM推理服務,基於vLLM,開發者可以透過一行程式碼實作針對魔搭社群的大語言模型部署。

    4. 多端異構部署: 魔搭社群和Xinference合作,支持對LLM的GGUF和GGML各種部署,支持將模型部署到CPU甚至個人膝上型電腦上。

    5. 分布式多模型部署: 魔搭社群和fastchat合作,支持一行程式碼部署魔搭社群的大語言模型,支持Web UI和OpenAI相容的RESTful API。

    模型套用-Agent

    Modelscope AgentFabric 是一個互動式智慧體框架,用於方便地建立針對各種現實套用量身客製智慧體。AgentFabric圍繞可插拔和可客製的LLM構建,並增強了指令執行、額外知識檢索和利用外部工具的能力。AgentFabric提供的互動界麵包括:

    ⚡ 智慧體構建器 :一個自動指令和工具提供者,透過與使用者聊天來客製使用者的智慧體

    ⚡ 使用者智慧體 :一個為使用者的實際套用客製的智慧體,提供構建智慧體或使用者輸入的指令、額外知識和工具

    ⚡ 配置設定工具 :支持使用者客製使用者智慧體的配置,並即時預覽使用者智慧體的效能

    預告:

    第二天: 提示詞工程-Prompt Engineering

    點選 閱讀原文 ,直達本期課程視訊學習