模型概述
模型特點
模型能力
使用案例
🚀 GPT-SW3 模型
GPT-SW3 是一系列僅含解碼器的大型預訓練變壓器語言模型,由 AI Sweden 聯合 RISE 和 WASP WARA for Media and Language 開發。該模型能夠以 5 種不同語言和 4 種編程語言生成連貫文本,還可通過文本生成任務執行未明確訓練過的文本任務。
🚀 快速開始
由於這是一個私有倉庫,若要從 Python 訪問該模型,你必須使用訪問令牌登錄。可以使用 huggingface-cli login
命令完成登錄,更多信息請參閱 HuggingFace 快速入門指南。
以下代碼片段可加載分詞器和模型,並在可用時使用 GPU:
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# Initialize Variables
model_name = "AI-Sweden-Models/gpt-sw3-20b-instruct"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
prompt = "Träd är fina för att"
# Initialize Tokenizer & Model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()
model.to(device)
使用 generate
方法生成文本的示例如下:
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
數據預處理期間使用的聊天格式如下:
<|endoftext|><s>
User:
Jag tycker träd är fina
<s>
Bot:
Kul att du tycker det!
<s>
...
生成文本的過程與上述相同:
prompt = """
<|endoftext|><s>
User:
Varför är träd fina?
<s>
Bot:
""".strip()
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
使用 generate
方法生成文本的示例如下:
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generate
方法的一個便捷替代方案是 HuggingFace 管道,它可以為你處理大部分工作:
generator = pipeline('text-generation', tokenizer=tokenizer, model=model, device=device)
generated = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.6, top_p=1)[0]["generated_text"]
✨ 主要特性
- 多語言支持:能夠以瑞典語、挪威語、丹麥語、冰島語和英語這 5 種語言生成連貫文本。
- 編程代碼處理:可以處理 4 種編程語言。
- 指令執行能力:能夠執行未明確訓練過的文本任務,通過將其轉化為文本生成任務來實現。
📦 安裝指南
由於這是一個私有倉庫,若要從 Python 訪問該模型,你必須使用訪問令牌登錄。可以使用 huggingface-cli login
命令完成登錄,更多信息請參閱 HuggingFace 快速入門指南。
💻 使用示例
基礎用法
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# Initialize Variables
model_name = "AI-Sweden-Models/gpt-sw3-20b-instruct"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
prompt = "Träd är fina för att"
# Initialize Tokenizer & Model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()
model.to(device)
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
print(generated_text)
高級用法
# 高級場景說明:使用聊天格式生成文本
prompt = """
<|endoftext|><s>
User:
Varför är träd fina?
<s>
Bot:
""".strip()
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
print(generated_text)
📚 詳細文檔
模型描述
AI Sweden 開發了一系列 GPT-SW3 模型,包括不同規模的基礎模型、指令模型和量化模型:
- 基礎模型:GPT-Sw3 126M、GPT-Sw3 356M、GPT-Sw3 1.3B、GPT-Sw3 6.7B、GPT-Sw3 6.7B v2、GPT-Sw3 20B、GPT-Sw3 40B。
- 指令模型:GPT-Sw3 126M Instruct、GPT-Sw3 356M Instruct、GPT-Sw3 1.3B Instruct、GPT-Sw3 6.7B v2 Instruct、GPT-Sw3 20B Instruct。
- 量化模型:GPT-Sw3 6.7B v2 Instruct 4-bit gptq、GPT-Sw3 20B Instruct 4-bit gptq。
GPT-SW3 是一系列僅含解碼器的大型預訓練變壓器語言模型,在包含 3200 億瑞典語、挪威語、丹麥語、冰島語、英語和編程代碼標記的數據集上進行了訓練。該模型使用因果語言建模(CLM)目標,利用 NeMo Megatron GPT 實現進行預訓練。
instruct
模型在指令數據上進行了微調,使用了聊天和原始文本兩種格式。
預期用途
GPT-SW3 是一種自迴歸大型語言模型,能夠以 5 種不同語言和 4 種編程語言生成連貫文本。它還可以通過將任務轉化為文本生成任務,執行未明確訓練過的文本任務。
侷限性
與其他大型語言模型一樣,由於訓練數據的多樣性(或缺乏多樣性)會對模型質量產生下游影響,GPT-SW3 在偏差和安全性等方面存在侷限性。它在生成多樣性和幻覺方面也可能存在質量問題。通過發佈修改後的 RAIL 許可證,我們希望增加對大型語言模型的溝通、透明度和研究。該模型可能存在以下問題:
- 過度代表某些觀點,而忽視其他觀點。
- 包含刻板印象。
- 生成仇恨、辱罵、暴力、歧視或偏見性語言。
- 產生錯誤,包括將不正確的信息當作事實輸出。
- 生成無關或重複的輸出。
- 生成可能不適用於所有場景的內容,包括色情內容。
合規性
GPT-SW3 的發佈包括模型權重、配置文件、分詞器文件和詞彙文件。這些文件均不包含任何個人身份信息(PII)或受版權保護的材料。
GPT-SW3 模型卡片
我們按照 Mitchell 等人(2018)的建議,為 GPT-SW3 提供了模型卡片。
模型詳情
屬性 | 詳情 |
---|---|
開發人員或組織 | GPT-SW3 由 AI Sweden 聯合 RISE 和 WASP WARA for Media and Language 開發。 |
模型發佈日期 | 2022 年 12 月 20 日 |
模型版本 | 這是 GPT-SW3 的第二代版本。 |
模型類型 | GPT-SW3 是一種僅含解碼器的大型變壓器語言模型。 |
訓練算法、參數、公平性約束或其他應用方法及特性信息 | GPT-SW3 使用 NeMo Megatron GPT 實現進行訓練。 |
更多信息的論文或其他資源 | 無 |
許可證 | LICENSE |
關於模型問題或評論的反饋地址 | nlu@ai.se |
預期用途
- 主要預期用途:我們預發佈 GPT-SW3 用於研究和評估大型語言模型在北歐語言方面的能力。這是構建大型語言模型知識、驗證模型以及收集關於模型優缺點反饋的重要一步。
- 主要預期用戶:北歐自然語言處理生態系統中的組織和個人,他們可以為模型的驗證和測試做出貢獻,並向社區提供反饋。
- 超出範圍的用例:請參閱修改後的 RAIL 許可證。
數據、侷限性和建議
- 訓練數據選擇:GPT-SW3 的訓練數據是基於廣度和可用性的結合進行選擇的。更多詳細信息請參閱我們的數據表。
- 評估數據選擇:無
- 侷限性:與其他大型語言模型一樣,由於訓練數據的多樣性(或缺乏多樣性)會對模型質量產生下游影響,GPT-SW3 在偏差和安全性等方面存在侷限性。它在生成多樣性和幻覺方面也可能存在質量問題。一般來說,GPT-SW3 無法避免困擾現代大型語言模型的諸多問題。通過發佈修改後的 RAIL 許可證,我們希望增加對大型語言模型的溝通、透明度和研究。該模型可能存在以下問題:過度代表某些觀點,而忽視其他觀點;包含刻板印象;生成仇恨、辱罵、暴力、歧視或偏見性語言;產生錯誤,包括將不正確的信息當作事實輸出;生成無關或重複的輸出;生成可能不適用於所有場景的內容,包括色情內容。
- 未來工作建議:間接用戶應瞭解他們處理的內容是由大型語言模型生成的。用戶應瞭解風險和侷限性,並在必要時包含適當的年齡聲明或屏蔽界面。使用大型語言模型預訓練的模型應包含更新的模型卡片。模型用戶應提供受影響者反饋的機制,例如用於評論的電子郵件地址。
- 我們希望 GPT-SW3 的發佈以及我們模型訓練過程的相關信息,將增加大型語言模型以及自然語言處理和深度學習領域的開放科學研究。
GPT-SW3 數據表
我們遵循 Gebru 等人(2021)的建議,為用於訓練 GPT-SW3 的數據集提供了數據表。
動機
- 數據集創建目的:大型語言模型(LLM)的預訓練,如 GPT-3(T. B. Brown 等人,2020)、Gopher(J. W. Rae 等人,2022)、BLOOM(T. L. Scao 等人,2022)等,需要數百甚至數千 GB 的文本數據。最近的研究(Chinchilla: J. Hoffmann 等人,2022)表明,訓練數據的規模比以前想象的更為重要。因此,為了訓練瑞典語大型語言模型,我們需要一個大規模、高質量的瑞典語數據集。由於在此之前不存在這樣的數據集,我們收集了北歐語言和英語的數據。
- 數據集創建者:AI Sweden 的戰略倡議自然語言理解團隊建立了一個新的研究環境,其中合作是關鍵。創建數據集的核心團隊是 AI Sweden 的 NLU 研究小組,該小組由來自 AI Sweden(Lindholmen Science Park AB)和 RISE 的研究人員和開發人員組成。
- 數據集創建資金來源:瑞典創新局(Vinnova)通過多個不同的資助項目為這項工作提供了資金,包括 2019 - 02996 和 2022 - 00949。
- 其他評論:無
組成
- 數據實例代表內容:數據實例是按語言和文檔類型分類的文本文檔。數據集是一個經過過濾和去重的集合,包括以下來源:
- 書籍:Litteraturbanken、The Pile
- 文章:Diva、The Pile: PubMed、The Pile: ArXiv
- 代碼:Code Parrot: Github code
- 對話:Familjeliv、Flashback、通過 Parlai 收集的數據集(詳見數據論文附錄)ParlAI、由 Baumgartner 等人(2020)開發並由 Roller 等人(2021)處理的 Pushshift.io Reddit 數據集
- 數學:由 DeepMind 代碼生成的英語數學數據集(D. Saxton 等人,2019)、使用手動翻譯模板生成的瑞典語數學數據集
- 其他:Summarization data、OPUS, the open parallel corpus、Movie scripts、Natural Instructions、P3 (Public Pool of Prompts)、The Norwegian Colossal Corpus、Danish Gigaword、Icelandic Gigaword、The Pile: Stack Exchange
- 網絡通用爬蟲數據:來自項目 LES(Linguistic Explorations of Societies)的網絡數據 LES、由 AllenAI 從 C4 準備的多語言 C4(MC4)(C. Raffel 等人,2019)、Open Super-large Crawled Aggregated coRpus (OSCAR)、The Pile: Open Web Text
- 網絡來源:各種瑞典公共網站的抓取數據(詳見數據論文附錄)、Familjeliv 文章、瑞典公共招聘廣告、維基百科、官方維基百科轉儲
- 指令數據:dolly、Open Assistant、OIG、Fass:瑞典藥品信息,已轉換為問答格式。
- 數據實例總數:訓練數據由 1.1TB UTF - 8 編碼文本組成,包含 6.6 億個文檔,總計 3200 億個標記。
- 數據集是否包含所有可能實例:我們數據集的多語言通用爬蟲數據集(MC4、Oscar)部分按語言進行了過濾,僅包括瑞典語、挪威語、丹麥語和冰島語。從 The Pile 中,我們僅包含了通常文本質量最高或能補充我們數據集其他來源不足的部分(例如書籍)。數據集的其餘部分從上述來源收集。
- 每個實例的數據組成:每個實例由原始文本數據組成。
- 是否有與每個實例關聯的標籤或目標:否。
- 單個實例是否缺少信息:否。
- 單個實例之間的關係是否明確:否。
- 是否有推薦的數據分割:對於該數據集,沒有明確推薦的數據分割。在預訓練模型時,訓練集、開發集和測試集的隨機分割比例分別設置為 99.99%、0.08% 和 0.02%,並根據每個子集的權重和大小進行比例採樣。每個子集的權重事先手動確定。這些決策考慮了數據的價值、來源和語言,以形成具有代表性和平衡性的預訓練語料庫。
- 數據集中是否有錯誤、噪聲源或冗餘:數據集是多個來源的集合,其中一些自然會有一些重疊。雖然我們進行了去重處理,但仍可能存在一些重疊。此外,通用爬蟲數據集中可能存在一些噪聲,在數據過濾過程中被遺漏。除了這些,我們沒有發現其他錯誤、噪聲源或冗餘。
- 數據集是否自包含:是。
- 數據集是否包含可能令人反感的內容:數據集包含公共通用爬蟲、Reddit、Familjeliv 和 Flashback 的子集。這些數據可能包含直接查看時可能令人反感、侮辱性、威脅性或引起焦慮的句子。
- 數據集是否與人物相關:部分數據文檔與人物相關,如新聞文章、維基百科描述等。
- 數據集是否識別任何子群體:否,數據集未明確包含子群體識別信息。
- 其他評論:無
收集過程
- 每個實例的數據獲取方式:數據集是公開可用數據集和來源的集合。
- 數據收集機制或程序:數據從互聯網下載。
- 數據集採樣策略:請參閱前面關於數據集部分選擇的回答。
- 數據收集人員及補償方式:數據由機器挖掘、過濾和採樣。
- 數據收集時間範圍:數據集於 2021 年 6 月至 2022 年 6 月期間收集。收集來源的創建時間各不相同,例如通用爬蟲數據已經連續收集了 12 年。
- 數據集是否與人物相關:是,文本由人產生。公開可用數據源中可能存在的任何個人信息,對於數據集的收集和使用並無影響。
- 是否進行了數據集及其使用對數據主體潛在影響的分析:是。
- 其他評論:無
預處理/清理/標註
- 數據是否進行了預處理/清理/標註:數據集在文檔級別使用標準程序進行了過濾和重新格式化,靈感來自 The BigScience ROOTS Corpus(H. Laurençon 等人,2022)和 Gopher(J. W. Rae 等人,2022)的工作。這樣做的目的是在整個數據集中實現一致的文本格式,並刪除不符合我們文本質量要求的文檔(例如重複性文檔)。此外,使用 MinHash 算法對數據集進行了去重處理,以解決收集子集之間的重疊問題,類似於 GPT - 3 和 The Pile 中使用的方法,並在“Deduplicating Training Data Makes Language Models Better”(K. Lee 等人,2021)中進行了更詳細的描述。
指令數據:上述處理未應用於指令數據。指令數據被轉換為聊天輪次格式,並相應地使用結束輪次標記進行格式化,同時展開為原始文本形式。Open Assistant 數據也使用 GPT - SW3 自動翻譯成了瑞典語、丹麥語、挪威語和冰島語。
- “原始”數據是否保存:“原始”組件數據集在各自的位置公開可用。
- 其他評論:無
用途
- 數據集是否已用於任何任務:數據集用於預訓練 GPT - SW3 模型。
- 是否有鏈接到使用該數據集的論文或系統的存儲庫:無。
- 數據集還可用於哪些任務:數據可用於預訓練語言模型,這些模型是許多當前和未來語言任務的基礎。
- 數據集的組成、收集和預處理/清理/標註方式是否會影響未來使用:數據集可能相當代表瑞典互聯網話語和瑞典公共部門,但我們知道這些數據不一定反映整個瑞典人口。
- 數據集不應用於哪些任務:目前我們不知道有哪些任務不適合使用該數據集。
- 其他評論:無
分發
- 數據集是否會分發給第三方:否。
- 數據集的分發方式:無。
- 數據集的分發時間:無。
- 數據集是否會在版權或其他知識產權(IP)許可證下分發:無。
- 數據集或單個實例是否適用出口管制或其他監管限制:無。
- 其他評論:無
維護
- 數據集的支持/託管/維護者:AI Sweden at Lindholmen Science Park AB。
- 數據集所有者/策展人/管理者的聯繫方式:nlu@ai.se
- 是否有勘誤表:無。
- 數據集是否會更新:目前沒有更新數據集的計劃。
- 如果數據集與人物相關,是否有數據保留限制:請閱讀 AI Sweden 的 NLU 倡議隱私政策 此處。
- 舊版本的數據集是否會繼續得到支持/託管/維護:無。
- 是否有機制允許他人擴展/增強/基於/貢獻數據集:目前沒有。
- 其他評論:無
Open LLM Leaderboard 評估結果
詳細結果可查看 此處
指標 | 值 |
---|---|
平均值 | 38.19 |
ARC (25-shot) | 43.17 |
HellaSwag (10-shot) | 71.09 |
MMLU (5-shot) | 31.32 |
TruthfulQA (0-shot) | 41.02 |
Winogrande (5-shot) | 66.77 |
GSM8K (5-shot) | 8.79 |
DROP (3-shot) | 5.15 |
🔧 技術細節
GPT-SW3 在包含 3200 億瑞典語、挪威語、丹麥語、冰島語、英語和編程代碼標記的數據集上進行了訓練。該模型使用因果語言建模(CLM)目標,利用 NeMo Megatron GPT 實現進行預訓練。instruct
模型在指令數據上進行了微調,使用了聊天和原始文本兩種格式。
📄 許可證
本項目採用 LICENSE 許可證。
⚠️ 重要提示
與其他大型語言模型一樣,由於訓練數據的多樣性(或缺乏多樣性)會對模型質量產生下游影響,GPT-SW3 在偏差和安全性等方面存在侷限性。它在生成多樣性和幻覺方面也可能存在質量問題。該模型可能存在過度代表某些觀點、包含刻板印象、生成仇恨性語言等問題,還可能產生錯誤信息、無關或重複輸出以及不適用於所有場景的內容。
💡 使用建議
間接用戶應瞭解他們處理的內容是由大型語言模型生成的。用戶應瞭解風險和侷限性,並在必要時包含適當的年齡聲明或屏蔽界面。使用大型語言模型預訓練的模型應包含更新的模型卡片。模型用戶應提供受影響者反饋的機制,例如用於評論的電子郵件地址。



