AMD OLMo 1B
AMD-OLMo 是由 AMD 在 AMD Instinct™ MI250 GPU 上從頭開始訓練的一系列 10 億參數語言模型。
下載量 4,419
發布時間 : 10/31/2024
模型概述
AMD-OLMo 是一個基於 OLMo 架構的 10 億參數語言模型,經過預訓練、監督微調(SFT)和 DPO 對齊等多個階段訓練,具有較高的訓練吞吐量和多任務表現。
模型特點
高性能訓練
使用 AMD Instinct™ MI250 GPUs 進行訓練,具有較高的訓練吞吐量(12,200 標記/秒/ GPU)。
多階段微調
經過預訓練、監督微調(SFT)和 DPO 對齊等多個階段,提升模型性能。
多任務表現出色
在多個標準基準測試中表現優異,具有良好的常識推理、多任務理解和負責任 AI 能力。
模型能力
文本生成
指令遵循
多輪對話
常識推理
多任務理解
使用案例
研究
語言模型研究
用於研究語言模型的性能和行為。
聊天應用
聊天機器人
用於構建多輪對話聊天機器人。
在 MT-Bench 上得分為 4.35(AMD-OLMo-1B-SFT)
指令遵循
指令生成
根據用戶指令生成響應。
在 AlpacaEval 1 上勝率為 54.22%(AMD-OLMo-1B-SFT-DPO)
🚀 AMD-OLMo
AMD-OLMo 是由 AMD 在 AMD Instinct™ MI250 GPU 上從頭開始訓練的一系列 10 億參數語言模型。所使用的訓練代碼基於 OLMo。
我們發佈了預訓練模型、監督微調模型和 DPO 對齊模型,具體如下:
- AMD-OLMo-1B:在 Dolma v1.7 的一個子集上進行預訓練,該子集包含 13 萬億個標記。
- AMD-OLMo-1B-SFT:在 Tulu V2 數據集(第一階段)上進行監督微調(SFT),然後在 OpenHermes-2.5、WebInstructSub 和 Code-Feedback 數據集(第二階段)上繼續微調。
- AMD-OLMo-1B-SFT-DPO:在 UltraFeedback 數據集上使用直接偏好優化(DPO)與人類偏好進行對齊。
🚀 快速開始
本項目提供了一系列語言模型,你可以按照以下步驟快速使用:
- 安裝依賴:參考後續的安裝指南部分,安裝必要的軟件和庫。
- 運行示例代碼:參考使用示例部分,使用提供的代碼示例進行模型推理。
✨ 主要特性
- 高性能訓練:使用 AMD Instinct™ MI250 GPUs 進行訓練,具有較高的訓練吞吐量。
- 多階段微調:經過預訓練、監督微調(SFT)和 DPO 對齊等多個階段,提升模型性能。
- 多任務表現出色:在多個標準基準測試中表現優異,具有良好的常識推理、多任務理解和負責任 AI 能力。
📦 安裝指南
在 AMD GPU 上運行 PyTorch
你可以使用 Docker Hub 中的 ROCm Docker 鏡像在 AMD GPUs 上運行 PyTorch:
docker pull rocm/pytorch:latest
# 在 Docker 內部
pip install transformers
評估環境設置
# lm-eval-harness
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
# AlpacaEval
pip install git+https://github.com/tatsu-lab/alpaca_eval
cd alpaca_eval
pip install -e .
# MT-Bench
git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip install -e ".[model_worker,llm_judge]"
訓練環境設置
WORK_DIR="<path_to_your_working_directory>"
cd $WORK_DIR
# 克隆 OLMo 代碼庫
git clone https://github.com/allenai/OLMo.git --branch v0.3.0
cd OLMo
# 克隆包含重現模型訓練文件的 AMD-OLMo 倉庫
git clone https://huggingface.co/amd/AMD-OLMo
docker pull rocm/pytorch:latest
docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --shm-size 8G -v $WORK_DIR/OLMo:/OLMo -w /OLMo rocm/pytorch:latest
# 由於 Docker 已安裝 ROCm PyTorch,移除第 17 行
sed -i '17d' pyproject.toml
pip install -e .[all]
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("amd/AMD-OLMo-1B-SFT").to("cuda") # 移除 .to("cuda") 以在 CPU 上加載
tokenizer = AutoTokenizer.from_pretrained("amd/AMD-OLMo-1B-SFT")
prompt = "What is large language model?"
bos = tokenizer.eos_token
template = bos + "<|user|>\n{prompt}\n<|assistant|>\n"
input_text = template.format(prompt=prompt)
inputs = tokenizer([input_text], return_tensors='pt', return_token_type_ids=False).to("cuda")
outputs = model.generate(**inputs, max_new_tokens=1000, do_sample=True, top_k=50, top_p=0.95)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True)[0])
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型類型 | 基於 OLMo-1B 架構的 10 億參數語言模型 |
訓練數據 | 預訓練使用 Dolma v1.7 子集;SFT 使用 Tulu V2、OpenHermes-2.5、WebInstructSub 和 Code-Feedback 等數據集;DPO 使用 UltraFeedback 數據集 |
訓練硬件和參數
- 硬件:每個計算節點包含 4 個 AMD Instinct™ MI250 GPUs,預訓練 AMD-OLMo-1B 使用 16 個節點。
- 訓練吞吐量:12,200 標記/秒/ GPU。
模型架構
AMD-OLMo-1B 基於完全開源的 10 億版本 OLMo-1B 的模型架構和訓練設置,具體參數如下:
參數規模 | 層數 | 頭數 | 隱藏層大小 | 上下文長度 | 詞彙表大小 |
---|---|---|---|---|---|
12 億 | 16 | 16 | 2048 | 2048 | 50,280 |
超參數設置
階段 | 學習率調度 | 峰值學習率 | 熱身步數 | 輪數 | 批次大小(標記) |
---|---|---|---|---|---|
預訓練 | 餘弦 | 4.0e-4 | 2000 | 1 | 4M |
SFT 階段 1 | 線性 | 2.0e-5 | 200 | 3 | 262K |
SFT 階段 2 | 線性 | 2.0e-5 | 200 | 3 | 1024K |
DPO | 餘弦 | 4.0e-6 | 47 | 1 | 64K |
🔧 技術細節
評估框架
我們使用以下開源評估框架對模型進行評估:
- Language Model Evaluation Harness:用於評估常識推理、多任務理解和負責任 AI 基準。
- AlpacaEval:用於評估聊天模型的指令遵循能力。
- MT-Bench:用於評估聊天模型的多輪對話能力。
評估設置
# lm-eval-harness
HF_MODEL=amd/AMD-OLMo-1B-SFT-DPO
accelerate launch -m lm_eval --model hf \
--model_args pretrained=$HF_MODEL,trust_remote_code=True \
--tasks arc_easy,arc_challenge,hellaswag,piqa,boolq,sciq,winogrande,openbookqa,mmlu,gsm8k_cot,bbh_cot_fewshot,toxigen,truthfulqa,crows_pairs \
--device cuda \
--batch_size 32 \
--output_path ./lm-eval-results/$HF_MODEL
訓練數據準備
# 下載預訓練數據集
DATA_DIR=./datasets/dolma
mkdir -p $DATA_DIR
PARALLEL_DOWNLOADS="<number_of_parallel_downloads>"
cat "AMD-OLMo/dolma_v1_7_subset.txt" | xargs -n 1 -P $PARALLEL_DOWNLOADS wget -q -P $DATA_DIR
# 準備預訓練數據集
NUM_WORKERS="<number_of_workers>"
python scripts/prepare_memmap_dataset.py $DATA_DIR/*.json.gz -o $DATA_DIR/memmap_dataset --workers $NUM_WORKERS
# 下載並準備 SFT 數據集
# 第一階段 SFT 數據集
python AMD-OLMo/prepare_sft_data.py --output_dir ./datasets/tulu --tokenizer tokenizers/allenai_eleuther-ai-gpt-neox-20b-pii-special.json --dataset tulu
# 第二階段 SFT 數據集
python AMD-OLMo/prepare_sft_data.py --output_dir ./datasets/OpenHermes_WebInstructSub_CodeFeedBack --tokenizer tokenizers/allenai_eleuther-ai-gpt-neox-20b-pii-special.json --dataset 2nd-phase
模型訓練
# 單節點訓練
HSA_FORCE_FINE_GRAIN_PCIE=1 OMP_NUM_THREADS=128 NCCL_DEBUG=INFO torchrun --nproc_per_node=8 ./scripts/train.py AMD-OLMo/AMD-OLMo-1B.yaml
# 多節點訓練
HSA_FORCE_FINE_GRAIN_PCIE=1 OMP_NUM_THREADS=128 NCCL_DEBUG=INFO torchrun --nnodes=$nnodes --node-rank=$node_rank --master_addr=$master_addr --master_port=$master_port --nproc_per_node=8 ./scripts/train.py AMD-OLMo/AMD-OLMo-1B.yaml
DPO 訓練
# 安裝 trl 庫
git clone https://github.com/huggingface/trl.git -b v0.8.6
# 替換 dpo_trainer.py
cp AMD-OLMo/dpo_trainer.py trl/trl/trainer
pip install -e ./trl
# 安裝 alignment-handbook
git clone https://github.com/huggingface/alignment-handbook.git hf-align
# 70769f9 是 2024 年 4 月 11 日的主分支。
cd hf-align && git checkout 70769f9 && cd ..
pip install -e ./hf-align
# 將 AMD OLMo DPO 配方複製到 hf-align/recipes。
cp AMD-OLMo/AMD-OLMo-1B-dpo.yaml hf-align/recipes/
# 準備轉換後的 AMD-OLMo SFT Huggingface 模型到 ckpt_dir。
ckpt_dir=amd/AMD-OLMo-1B-SFT
local_tokenizer_dir=${ckpt_dir}
# 設置輸出檢查點目錄。
dpo_ckpt_dir=<your_output_checkpoint_dir>
accelerate launch --config_file hf-align/recipes/accelerate_configs/deepspeed_zero3.yaml \
hf-align/scripts/run_dpo.py hf-align/recipes/AMD-OLMo-1B-dpo.yaml \
--trust_remote_code=true \
--model_name_or_path=${ckpt_dir} \
--tokenizer_name_or_path=${local_tokenizer_dir} \
--output_dir=${dpo_ckpt_dir} \
--num_train_epochs=1 \
--learning_rate=4e-6 \
--beta=0.3 \
--loss_type=sigmoid
主要結果
預訓練結果
標準基準測試 | TinyLLaMA-v1.1 (11 億) | MobiLLaMA-1B (12 億) | OLMo-1B (12 億) | OpenELM-1_1B (11 億) | OLMo-1B-0724-hf (12 億) | AMD-OLMo-1B (12 億) |
---|---|---|---|---|---|---|
arc_easy | 55.47 | 56.65 | 57.28 | 55.43 | 56.65 | 63.64 |
arc_challenge | 32.68 | 32.00 | 31.06 | 32.34 | 32.34 | 33.70 |
hellaswag | 61.47 | 61.80 | 62.92 | 64.81 | 66.12 | 63.61 |
piqa | 73.56 | 75.30 | 75.14 | 75.57 | 75.08 | 75.57 |
boolq | 55.99 | 60.83 | 61.74 | 63.58 | 66.18 | 60.58 |
sciq | 89.30 | 88.20 | 87.00 | 90.60 | 92.70 | 93.20 |
winogrande | 59.43 | 59.27 | 59.98 | 61.72 | 61.72 | 61.64 |
openbookqa | 36.80 | 35.40 | 36.20 | 36.20 | 35.60 | 35.80 |
mmlu (0 次射擊) | 25.02 | 24.81 | 24.23 | 25.26 | 25.45 | 24.88 |
gsm8k (8 次射擊) | 1.82 | 0.00 | 2.50 | 2.81 | 8.95 | 2.88 |
bbh (3 次射擊) | 25.63 | 0.00 | 25.63 | 16.77 | 21.67 | 20.95 |
平均 | 47.02 | 44.93 | 47.61 | 47.73 | 49.31 | 48.77 |
指令微調結果
標準基準測試 | TinyLlama-1.1B-Chat-v1.0 (11 億) | MobiLlama-1B-Chat (12 億) | OpenELM-1_1B-Instruct (11 億) | AMD-OLMo-1B-SFT (12 億) | AMD-OLMo-1B-SFT-DPO (12 億) |
---|---|---|---|---|---|
arc_easy | 54.42 | 57.41 | 52.44 | 63.68 | 64.31 |
arc_challenge | 32.85 | 34.56 | 37.80 | 37.12 | 37.37 |
hellaswag | 60.40 | 62.51 | 71.29 | 61.63 | 61.91 |
piqa | 74.48 | 75.73 | 75.03 | 74.43 | 74.16 |
boolq | 61.04 | 55.66 | 70.28 | 68.53 | 70.24 |
sciq | 88.40 | 87.10 | 89.50 | 91.20 | 92.10 |
winogrande | 60.54 | 60.77 | 62.19 | 60.22 | 60.62 |
openbookqa | 37.20 | 36.80 | 39.20 | 37.40 | 40.20 |
mmlu | 24.61 | 25.25 | 25.54 | 29.97 | 30.52 |
gsm8k (8 次射擊) | 2.81 | 0.23 | 1.82 | 18.20 | 15.77 |
bbh (3 次射擊) | 26.83 | 0.00 | 13.40 | 25.17 | 25.45 |
平均 | 47.60 | 45.09 | 48.95 | 51.60 | 52.06 |
聊天基準測試結果
聊天基準測試 | TinyLlama-1.1B-Chat-v1.0 (11 億) | MobiLlama-1B-Chat (12 億) | OpenELM-1_1B-Instruct (11 億) | AMD-OLMo-1B-SFT (12 億) | AMD-OLMo-1B-SFT-DPO (12 億) |
---|---|---|---|---|---|
AlpacaEval 1 (勝率) | 50.81 | 34.90 | 37.72 | 50.12 | 54.22 |
AlpacaEval 2 (LC 勝率) | 1.54 | 1.59 | 0.49 | 3.88 | 2.37 |
MTBench | 3.38 | 2.89 | - | 4.35 | 4.10 |
負責任 AI 基準測試結果
負責任 AI 基準測試 | TinyLlama-1.1B-Chat-v1.0 (11 億) | MobiLlama-1B-Chat (12 億) | OpenELM-1_1B-Instruct (11 億) | AMD-OLMo-1B-SFT (12 億) | AMD-OLMo-1B-SFT-DPO (12 億) |
---|---|---|---|---|---|
ToxiGen | 41.70 | 37.23 | 42.34 | 39.04 | 39.68 |
crows_pairs | 60.35 | 58.50 | 59.93 | 60.29 | 61.00 |
TruthfulQA-mc2 | 37.92 | 38.46 | 45.84 | 37.45 | 40.06 |
評估
我們使用以下開源評估框架對模型進行評估:
- Language Model Evaluation Harness:用於評估常識推理、多任務理解和負責任 AI 基準。
- AlpacaEval:用於評估聊天模型的指令遵循能力。
- MT-Bench:用於評估聊天模型的多輪對話能力。
評估指標
基準測試 | 指標 |
---|---|
arc_easy | 歸一化準確率 |
arc_challenge | 歸一化準確率 |
hellaswag | 歸一化準確率 |
piqa | 準確率 |
boolq | 準確率 |
sciq | 準確率 |
winogrande | 準確率 |
openbookqa | 歸一化準確率 |
mmlu | 準確率 |
gsm8k (8 次射擊) | 精確匹配(靈活提取) |
bbh (3 次射擊) | 精確匹配 |
ToxiGen | 準確率 |
crows_pairs | PCT 刻板印象 |
TruthfulQA-mc2 | 準確率 |
AlpacaEval 1 (勝率) | 勝率 (chatgpt_fn) |
AlpacaEval 2 (LC 勝率) | 長度控制勝率 (weighted_alpaca_eval_gpt4_turbo) |
MTBench | 單答案評分平均得分(2 輪) |
偏差、風險和限制
⚠️ 重要提示
- 這些模型僅用於研究目的,不適用於需要高事實性、安全關鍵情況、健康或醫療應用、生成虛假信息、促進有毒對話的用例。
- 模型檢查點在沒有任何安全保證的情況下提供。用戶必須根據各自的用例進行全面評估並實施安全過濾機制。
- 可能可以通過提示使模型生成可能事實不準確、有害、暴力、有毒、有偏見或以其他方式令人反感的內容。即使提示並非有意產生此類輸出,也可能會生成此類內容。因此,建議用戶在使用模型時保持警惕並進行負責任的思考。
- 模型的多語言能力尚未經過測試,因此可能會誤解並在不同語言中生成錯誤的響應。
📄 許可證
Copyright (c) 2018 - 2024 Advanced Micro Devices, Inc. All Rights Reserved.
本項目遵循 Apache License 2.0 許可協議,你可以在以下鏈接獲取許可證副本: http://www.apache.org/licenses/LICENSE-2.0
除非適用法律要求或書面同意,否則根據本許可證分發的軟件按“原樣”分發,不附帶任何形式的明示或暗示的保證或條件。請查看許可證以瞭解特定語言的許可權限和限制。
引用
如果你使用了我們的 AMD-OLMo 模型,請引用以下文獻:
@misc{AMD-OLMo,
title = {AMD-OLMo: A series of 1B language models trained from scratch by AMD on AMD Instinct™ MI250 GPUs.},
url = {https://huggingface.co/amd/AMD-OLMo},
author = {Jiang Liu, Jialian Wu, Prakamya Mishra, Zicheng Liu, Sudhanshu Ranjan, Pratik Prabhanjan Brahma, Yusheng Su, Gowtham Ramesh, Peng Sun, Zhe Li, Dong Li, Lu Tian, Emad Barsoum},
month = {October},
year = {2024}
}
Phi 2 GGUF
其他
Phi-2是微軟開發的一個小型但強大的語言模型,具有27億參數,專注於高效推理和高質量文本生成。
大型語言模型 支持多種語言
P
TheBloke
41.5M
205
Roberta Large
MIT
基於掩碼語言建模目標預訓練的大型英語語言模型,採用改進的BERT訓練方法
大型語言模型 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基礎模型的蒸餾版本,在保持相近性能的同時更輕量高效,適用於序列分類、標記分類等自然語言處理任務。
大型語言模型 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一個多語言大語言模型,針對多語言對話用例進行了優化,在常見的行業基準測試中表現優異。
大型語言模型 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基於100種語言的2.5TB過濾CommonCrawl數據預訓練的多語言模型,採用掩碼語言建模目標進行訓練。
大型語言模型 支持多種語言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基於Transformer架構的英語預訓練模型,通過掩碼語言建模目標在海量文本上訓練,支持文本特徵提取和下游任務微調
大型語言模型 英語
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI發佈的開放預訓練Transformer語言模型套件,參數量從1.25億到1750億,旨在對標GPT-3系列性能,同時促進大規模語言模型的開放研究。
大型語言模型 英語
O
facebook
6.3M
198
1
基於transformers庫的預訓練模型,適用於多種NLP任務
大型語言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多語言大語言模型系列,包含8B、70B和405B參數規模,支持8種語言和代碼生成,優化了多語言對話場景。
大型語言模型
Transformers 支持多種語言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基礎版是由Google開發的文本到文本轉換Transformer模型,參數規模2.2億,支持多語言NLP任務。
大型語言模型 支持多種語言
T
google-t5
5.4M
702
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98