模型概述
模型特點
模型能力
使用案例
🚀 BTLM-3B-8k-base
比特張量語言模型(BTLM-3B-8k-base) 是一個擁有30億參數的語言模型,上下文長度達8k,在6270億個 SlimPajama 標記上進行訓練。BTLM-3B-8k-base為30億參數模型樹立了新的標準,其性能超越了在多數千億標記上訓練的模型,與開源的70億參數模型相當。該模型還可以量化為4位,以適配內存低至3GB的設備。此模型根據Apache 2.0許可證發佈,可用於商業用途。
🚀 快速開始
BTLM由 Cerebras 與 Opentensor 合作,在新推出的 Condor Galaxy 1(CG-1)超級計算機 上進行訓練,這是G42-Cerebras戰略合作伙伴關係的首個公開成果。
✨ 主要特性
- 可商業使用:基於Apache 2.0許可證。
- 30億參數模型中的先進水平。
- 在30億參數模型中實現70億參數模型的性能:通過 ALiBi、SwiGLU、最大更新參數化(muP) 以及經過大量去重和清理的 SlimPajama-627B數據集 提升性能。
- 量化為4位時可適配低至3GB內存的設備。
- 少數支持8k序列長度的30億參數模型之一:得益於ALiBi。
- 與可比的70億參數模型相比,訓練所需的浮點運算減少71%,推理時的內存佔用減少58%。
📦 安裝指南
本項目未提及具體安裝步驟,可參考以下使用示例進行操作。
💻 使用示例
基礎用法
使用 generate()
方法:
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加載分詞器和模型
tokenizer = AutoTokenizer.from_pretrained("cerebras/btlm-3b-8k-base")
model = AutoModelForCausalLM.from_pretrained("cerebras/btlm-3b-8k-base", trust_remote_code=True, torch_dtype="auto")
# 設置生成文本的提示
prompt = "Albert Einstein was known for "
# 對提示進行分詞並轉換為PyTorch張量
inputs = tokenizer(prompt, return_tensors="pt")
# 使用模型生成文本
outputs = model.generate(
**inputs,
num_beams=5,
max_new_tokens=50,
early_stopping=True,
no_repeat_ngram_size=2
)
# 將生成的標記ID轉換回文本
generated_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)
# 打印生成的文本
print(generated_text[0])
使用 pipeline
方法:
from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers import pipeline
# 加載分詞器和模型
tokenizer = AutoTokenizer.from_pretrained("cerebras/btlm-3b-8k-base")
model = AutoModelForCausalLM.from_pretrained("cerebras/btlm-3b-8k-base", trust_remote_code=True, torch_dtype="auto")
# 設置文本生成的提示
prompt = """Isaac Newton was a """
# 創建文本生成管道
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# 使用管道生成文本
generated_text = pipe(
prompt,
max_length=50,
do_sample=False,
no_repeat_ngram_size=2)[0]
# 打印生成的文本
print(generated_text['generated_text'])
高級用法
繼續使用PyTorch和最大更新參數化進行訓練:
from transformers import AutoModelForCausalLM
import torch
model = AutoModelForCausalLM.from_pretrained("cerebras/btlm-3b-8k-base", trust_remote_code=True)
# 獲取muP優化器的參數組
param_groups = model.get_mup_param_groups(lr=1e-3, weight_decay=0.1)
# 使用帶有muP參數的AdamW設置優化器
optimizer = torch.optim.AdamW(
param_groups,
betas=(0.9, 0.95),
eps=1e-8
)
確保在配置中傳遞以下muP參數,否則模型將默認為標準參數化:
mup_width_scale: <float>
mup_embeddings_scale: <float>
mup_output_alpha: <float>
mup_scale_qk_dot_by_d: true
使用位置插值擴展上下文長度:
推理期間(不進行微調):
可以使用動態線性縮放將上下文長度擴展到訓練上下文長度的2倍,而不會降低性能。當 input_seq_len
大於 train_seq_len
時,動態線性縮放會以 input_seq_len/train_seq_len
為因子調整ALiBi的斜率。詳情請參閱我們的論文 Position Interpolation Improves ALiBi Extrapolation。要啟用動態線性縮放,請按以下方式更新 config.json
:
# 使用推理期間將遇到的最大上下文長度更新 `n_positions`(例如16384個標記)
"n_positions": 16384,
# 在 `alibi_scaling` 參數中指定 `train_seq_len`
"alibi_scaling": {
"type": "linear",
"train_seq_len": 8192
}
使用微調 + 位置插值:
結合位置插值進行微調有助於實現更大的外推長度。縮放因子應固定為 finetuning_seq_len/train_seq_len
。要啟用固定線性縮放,請按以下方式更新 config.json
:
# 使用微調上下文長度更新 `n_positions`(例如32768個標記)
"n_positions": 32768,
# 在 `alibi_scaling` 參數中指定縮放 `factor`
"alibi_scaling": {
"type": "linear",
"factor": 4.0
}
📚 詳細文檔
評估與其他模型的比較
內存要求
圖1. 不同模型大小和量化方案的內存要求
質量、訓練成本、內存佔用、推理速度
圖2: BTLM-3B-8K與70億參數模型家族在質量、內存佔用和推理成本方面的比較。
與30億參數模型的性能比較
表1: 30億參數模型的性能。詳細的下游任務比較。MMLU任務性能採用5次抽樣報告,其他任務採用0次抽樣。
圖3: 30億參數模型的性能
與70億參數模型的性能比較
表2: 70億參數模型的性能。詳細的下游任務比較。MMLU任務性能採用5次抽樣報告,其他任務採用0次抽樣。
圖4: 70億參數模型的性能
長序列長度
為了支持長序列應用,我們使用了ALiBi位置嵌入,並在2048的上下文長度下對4700億個標記進行訓練,然後在8192的上下文長度下對1570億個標記進行訓練。為了評估BTLM的長序列能力,我們在SlimPajama測試集上以32768的上下文長度進行評估,並繪製每個標記位置的損失。雖然ALiBi在理論上允許外推,但僅在2048的上下文長度下訓練在實踐中並不能很好地外推。幸運的是,可變序列長度訓練可以顯著改善外推效果。BTLM-3B在高達10k的上下文長度下外推效果良好,但超過此長度後性能會略有下降。
圖5: BTLM-3B模型在SlimPajama測試集上的交叉熵評估。在32768個標記的外推序列長度上進行推理。
模型詳情
屬性 | 詳情 |
---|---|
開發團隊 | Cerebras Systems 和 Opentensor,並得到 G42 Cloud 和 IIAI 的大力支持 |
許可證 | Apache 2.0 |
模型類型 | 僅解碼器語言模型 |
架構 | 帶有SwiGLU、ALiBi和muP的GPT-2風格架構 |
數據集 | SlimPajama-627B |
分詞器 | 字節對編碼 |
詞彙量大小 | 50257 |
序列長度 | 8192 |
優化器 | AdamW |
位置編碼 | ALiBi |
語言 | 英語 |
瞭解更多 | BTLM-3B-8k博客 |
論文 | BTLM-3B-8K: 7B Parameter Performance in a 3B Parameter Model |
使用和限制
預期用途
主要預期用途是進一步開展大語言模型的研究。BTLM-3B-8k-base可作為自然語言處理、應用、倫理和對齊研究的基礎模型。我們以完全許可的Apache許可證發佈這些模型,供社區自由使用。
您可以通過Cerebras Model Studio 或第三方庫對BTLM-3B-8k-base模型進行微調。在將BTLM-3B-8k-base用於生產下游應用之前,應進行進一步的安全相關測試和緩解措施。
非預期用途
BTLM-3B-8k-base在SlimPajama上進行訓練,主要是英語數據,不建議用於機器翻譯任務。BTLM-3B-8k-base未針對指令跟隨或基於聊天的用例進行調整。
生成示例
提示:"什麼是壓力計?"
生成:"壓力計是一種測量流體壓力的儀器。"
提示:"羅伯特·奧本海默因什麼而聞名?"
生成:“羅伯特·奧本海默是一位物理學家,他是曼哈頓計劃的負責人,該計劃負責核武器的研發。”
提示:"阿爾伯特·愛因斯坦以什麼而聞名?"
生成:“阿爾伯特·愛因斯坦是一位出生於德國的理論物理學家,他提出了相對論,這是現代物理學的兩大支柱之一(另一支柱是量子力學)。”
提示:“艾薩克·牛頓是誰?”
生成:“艾薩克·牛頓是一位英國物理學家、數學家、天文學家、鍊金術士和神學家。他被廣泛認為是有史以來最有影響力的科學家之一,也是科學革命的關鍵人物。”
提示:"血液離開右心室後被泵到哪裡?"
生成:“右心房接收來自肺動脈的脫氧血液。心臟的右側是唯一接收脫氧血液的一側……”
提示:"彼得參加完當地音樂會後丟了錢包。為了幫助他,鮑勃給了大衛10美元。大衛然後把錢給了彼得。現在彼得一共有多少錢?"
生成:“A. 10美元”
風險、偏差和倫理考慮
⚠️ 重要提示
此模型的輸出可能與人類價值觀一致,也可能不一致。在將此模型部署到可能直接影響人類生活的生產環境之前,需要徹底調查風險。
💡 使用建議
RedPajama數據集 可能存在分佈偏差,這可能在下游模型部署中以各種形式表現出來。大語言模型還存在其他風險,如放大刻板印象、記憶訓練數據或洩露私人或安全信息。
📄 許可證
本項目採用Apache 2.0許可證。
致謝
我們感謝所有使這項工作成為可能的Cerebras工程師。
我們感謝G42 Cloud和Inception Institute of Artificial Intelligence的慷慨支持,他們為我們在Condor Galaxy 1上提供了計算時間。



