HuggingFace镜像/Bielik-7B-v0.1-openmind
模型介绍文件和版本分析
下载使用量0

Bielik-7B-v0.1

Bielik-7B-v0.1 是一款拥有 70 亿参数的生成式文本模型,它以 Mistral-7B-v0.1 为基础,通过处理超过 700 亿个标记精心优化而成。上述模型是开源科学项目 SpeakLeash 与高性能计算(HPC)中心 ACK Cyfronet AGH 独特合作的成果。该模型基于波兰语文本语料库开发和训练,这些语料库由 SpeakLeash 团队精心挑选和处理。此项目利用了波兰的大规模计算基础设施,特别是 PLGrid 环境,更具体地说,是 HPC 中心 ACK Cyfronet AGH。Bielik-7B-v0.1 的创建和训练得到了编号为 PLG/2024/016951 的计算资助支持,在 Athena 和 Helios 超级计算机上进行,这使得大规模机器学习过程所需的尖端技术和计算资源得以应用。因此,该模型展现出卓越的波兰语理解和处理能力,能够提供准确的响应,并高精度地执行各种语言任务。

⚠️ 这是一个基础模型,适用于大多数场景下的进一步微调。如果您正在寻找开箱即可用于聊天或遵循指令的模型,请使用 Bielik-7B-Instruct-v0.1。

🎥 演示:https://huggingface.co/spaces/speakleash/Bielik-7B-Instruct-v0.1

🗣️ 聊天竞技场*:https://arena.speakleash.org.pl/

*聊天竞技场是一个用于测试和比较不同 AI 语言模型的平台,允许用户评估它们的性能和质量。

模型

Bielik-7B-v0.1 的训练使用了名为 ALLaMo 的原创开源框架,该框架由 Krzysztof Ociepa 实现。此框架允许用户以快速高效的方式训练架构类似于 LLaMA 和 Mistral 的语言模型。

模型训练在 ACK Cyfronet AGH 的 Helios 超级计算机上进行,使用了 256 张 NVidia GH200 显卡,吞吐量超过 9200 tokens/gpu/second。

训练数据集由通过 SpeakLeash 项目收集并提供的波兰语文本组成。我们使用了超过 360 亿个标记进行了两轮训练。

模型说明:

  • 开发者: SpeakLeash
  • 语言: 波兰语
  • 模型类型: 仅因果解码器
  • 改编自: Mistral-7B-v0.1
  • 许可证: Apache 2.0(允许商业使用)
  • 模型引用: speakleash:debfc8635c781358e8db833a333887a5

质量评估

为评估波兰语母语文本的质量,我们准备并创建了一个XGBoost分类模型。该模型基于93个特征,例如未登录词与总词数的比率(OOVs)、名词数量、动词数量、平均句子长度等。模型会输出给定文档的类别(HIGH、MEDIUM或LOW)以及相应的概率。这种方法支持实施专用的文档选择流程,我们从中选用了质量指数为HIGH且概率超过90%的文本条目。

这种文本过滤和精心筛选过程,为训练提供了一个精炼且高质量的波兰语文本数据库。

训练

  • 框架:ALLaMo
  • 可视化工具:W&B

训练超参数:

超参数数值
上下文长度4096
微批次大小4
批次大小4194304
学习率(余弦)3e-05 -> 2e-05
预热迭代次数2000
总迭代次数17350
优化器AdamW
β1, β20.9, 0.95
Adam_eps1e−8
权重衰减0.1
梯度裁剪1.0
精度bfloat16(混合)

在 Openmind 中的使用

from openmind import AutoTokenizer, AutoModelForCausalLM, is_torch_npu_available
from openmind_hub import snapshot_download
import torch.nn.functional as F
from torch import Tensor
import argparse
import time

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--model_name_or_path",
        type=str,
        help="Path to model",
        default="jeffding/Bielik-7B-v0.1-openmind",
    )
    args = parser.parse_args()
    return args

def main():
    args = parse_args()
    model_path = args.model_name_or_path

    if is_torch_npu_available():
        device = "npu:0"
    else:
        device = "cpu"
    tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
    model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
    model = model.to(device)
    
    start_time = time.time()
    
    prompt = "Give me a short introduction to large language model."
    inputs = tokenizer(prompt, return_tensors="pt", return_token_type_ids=False).to(device)
    out = model.generate(**inputs, max_new_tokens=80).ravel()
    out = tokenizer.decode(out)
    print(out)
    
    end_time = time.time()
    print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")
    
if __name__ == "__main__":
    main()

快速入门

可使用 AutoModelForCausalLM 功能轻松加载此模型。

from transformers import AutoTokenizer, AutoModelForCausalLM

model_name = "speakleash/Bielik-7B-v0.1"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

为了降低内存占用,您可以使用更低的精度(bfloat16)。

import torch

model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)

然后您可以使用 Hugging Face Pipelines 来生成文本:

import transformers

text = "Najważniejszym celem człowieka na ziemi jest"

pipeline = transformers.pipeline("text-generation", model=model, tokenizer=tokenizer)
sequences = pipeline(max_new_tokens=100, do_sample=True, top_k=50, eos_token_id=tokenizer.eos_token_id, text_inputs=text)
for seq in sequences:
    print(f"Result: {seq['generated_text']}")

生成输出:

人类在地球上最重要的目标是生活在和平、和谐与爱之中。对我们每个人来说,身边有所爱的人是非常重要的。

评估

模型已在 Open PL LLM Leaderboard 上进行了5-shot评估。该基准测试评估模型在NLP任务中的表现,如情感分析、分类、文本分类,但不测试聊天技能。以下为呈现内容:

  • 平均值(Average)- 所有任务的平均得分,按基线得分归一化
  • 重排序(Reranking)- 重排序任务,常用于RAG
  • 阅读器(生成器)(Reader (Generator))- 开卷问答任务,常用于RAG
  • 困惑度(Perplexity,越低越好)- 作为附加指标,与其他分数不相关,不应用于模型比较

截至2024年4月3日,下表展示了根据Open PL LLM Leaderboard在5-shot设置下评估的预训练和持续预训练模型的当前分数:

平均值RAG 重排序RAG 阅读器困惑度
70亿参数模型:
基线(多数类)0.0053.36--
OPI-PG/Qra-7b11.1354.4075.25203.36
meta-llama/Llama-2-7b-hf12.7354.0277.92850.45
internlm/internlm2-base-7b20.6852.3969.853110.92
Bielik-7B-v0.129.3862.1388.39123.31
mistralai/Mistral-7B-v0.130.6760.3585.39857.32
internlm/internlm2-7b33.0369.3973.635498.23
alpindale/Mistral-7B-v0.2-hf33.0560.2385.21932.60
speakleash/mistral-apt3-7B/spi-e0_hf (experimental)35.5062.1487.48132.78
不同规模模型:
sdadas/polish-gpt2-xl (1.7B)-23.2248.073.04160.95
Azurro/APT3-1B-Base (1B)-8.2351.4918.94249.90
OPI-PG/Qra-1b (1B)-5.4447.6538.51398.96
internlm/internlm2-1_8b (1.8B)-2.7849.3731.8860296.30
OPI-PG/Qra-13b (13B)29.0353.2883.03168.66
upstage/SOLAR-10.7B-v1.0 (10.7B)38.1275.8186.39641.05
波兰语指令微调模型:
szymonrucinski/Curie-7B-v126.7255.5885.19389.17
Voicelab/trurl-2-7b18.8560.6777.191098.88
Bielik-7B-Instruct-v0.139.2861.8986.00277.92

如您所见,Bielik-7B-v0.1并非拥有最佳的平均得分,但它具有一些明显的优势,例如在RAG阅读器任务中获得了最佳分数。

上述表格中的结果是在未对指令模型使用指令模板的情况下获得的,而是将它们视为基础模型。这种方法可能会使结果产生偏差,因为指令模型是针对特定指令进行优化的。

局限性与偏见

Bielik-7B-v0.1 不建议在未经微调的情况下部署。若未设置进一步的安全防护措施且未获得用户同意,不应将其用于面向人类的交互。

Bielik-7B-v0.1 可能会产生与事实不符的输出,因此不应依赖它来生成事实准确的数据。Bielik-7B-v0.1 是在各种公开数据集上训练的。尽管已尽最大努力清理训练数据,但该模型仍有可能生成低俗、虚假、带有偏见或其他冒犯性的内容。

许可证

本模型采用 Apache 2.0 许可证授权,允许商业用途。

引用

请使用以下格式引用本模型:

@misc{Bielik7Bv01,
    title     = {Introducing Bielik-7B-v0.1: Polish Language Model},
    author    = {Ociepa, Krzysztof and Flis, Łukasz and Wróbel, Krzysztof and Gwoździej, Adrian and {SpeakLeash Team} and {Cyfronet Team}},
    year      = {2024},
    url       = {https://huggingface.co/speakleash/Bielik-7B-v0.1},
    note      = {Accessed: 2024-04-01}, % change this date
    urldate   = {2024-04-01} % change this date
}

@misc{ociepa2024bielik7bv01polish,
      title={Bielik 7B v0.1: A Polish Language Model -- Development, Insights, and Evaluation}, 
      author={Krzysztof Ociepa and Łukasz Flis and Krzysztof Wróbel and Adrian Gwoździej and Remigiusz Kinas},
      year={2024},
      eprint={2410.18565},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2410.18565}, 
}

负责模型训练

  • Krzysztof OciepaSpeakLeash - 团队领导、概念构思、数据准备、流程优化及训练监督
  • Łukasz FlisCyfronet AGH - 训练协调与监督
  • Adrian GwoździejSpeakLeash - 数据清理与质量保障
  • Krzysztof WróbelSpeakLeash - 基准测试

本模型的成功构建离不开整个SpeakLeash团队的投入与付出,他们的贡献无可估量。正是凭借众多人员的辛勤努力,才得以收集到大量波兰语内容,并促成了开放科学项目SpeakLeash与高性能计算中心ACK Cyfronet AGH之间的合作。通过投身于开放科学SpeakLeash项目,为模型创建做出贡献的人员包括: Sebastian Kondracki、 Maria Filipkowska、 Grzegorz Urbanowicz、 Szymon Baczyński、 Paweł Kiszczak、 Igor Ciuciura、 Paweł Cyrta、 Jacek Chwiła、 Jan Maria Kowalski、 Karol Jezierski、 Kamil Nonckiewicz、 Izabela Babis、 Nina Babis、 Waldemar Boszko、 Remigiusz Kinas、 Piotr Rybak 以及其他众多优秀的研究人员和人工智能领域的爱好者。

ACK Cyfronet AGH团队中提供宝贵支持和专业知识的成员: Szymon Mazurek。

联系我们

如果您有任何问题或建议,请使用讨论选项卡。如果您想直接联系我们,请加入我们的 Discord SpeakLeash。