尽管 Falcon-11B 已在 5T tokens 上完成训练,但从图表中可以看出,它仍处于欠拟合状态。 因此,我们决定对 50% 的层进行剪枝。 需要注意的是,仍需进行约 1B tokens 的持续预训练(约 1M 行 1k tokens 的数据),以恢复该模型在目标语言上的困惑度。 我计划在 fineweb-edu-{specific_language} 可用时,针对特定语言开展此项工作,具体取决于可用的计算资源情况。
这是一个使用 mergekit 创建的预训练语言模型合并版本。
本模型采用 passthrough 合并方法进行剪枝。
生成此模型时使用了以下 YAML 配置:
slices:
- sources:
- model: tiiuae/falcon-11B
layer_range: [0, 24]
- sources:
- model: tiiuae/falcon-11B
layer_range: [55, 59]
merge_method: passthrough
dtype: bfloat16PruneMe 已通过研究 11 种语言的 wikimedia/wikipedia 子集(每种语言 2000 个样本)的层相似性得到应用。剪枝的层范围是根据每种语言分析的平均值确定的,目的是在减小模型大小的同时保持性能。
from openmind import AutoTokenizer, AutoModelForCausalLM
import openmind
import torch
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="model_path",
default="Jinan_AICC/Falcon2-5.5B-multilingual",
)
args = parser.parse_args()
return args
args = parse_args()
model = args.model_name_or_path
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = openmind.pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
)
sequences = pipeline(
"Can you explain the concepts of Quantum Computing?",
max_length=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
💥 使用 openmind 时,Falcon LLM 需要 PyTorch 2.0 版本!
大型语言模型研究;作为进一步专业化和针对特定用例(例如摘要、文本生成、聊天机器人等)进行微调的基础。
未经充分风险评估和缓解措施的生产使用;任何可能被视为不负责任或有害的用例。
Falcon2-5.5B 主要在英语语料上训练,同时也包含德语、西班牙语、法语、意大利语、葡萄牙语、波兰语、荷兰语、罗马尼亚语、捷克语和瑞典语。它可能无法很好地适用于其他语言。此外,由于其训练数据来自代表网络内容的大规模语料库,因此会包含网络上常见的刻板印象和偏差。
我们建议 Falcon2-5.5B 的用户考虑针对特定感兴趣的任务集对其进行微调,并在任何生产使用中采取防护措施和适当的预防手段。