大型语言模型 (LLM) 的兴起一直是自然语言处理 (NLP) 领域的一个决定性趋势,导致它们在各种应用程序中的广泛采用。然而,这种进步往往是排他性的,大多数由资源丰富的组织开发的 LLM 仍然无法向公众开放。
这种排他性提出了一个重要的问题:如果有一种方法可以使对这些强大的语言模型的访问民主化,那会怎样?这就是 BLOOM 出现的原因。
本文首先提供了有关其起源的更多详细信息,从而全面概述了 BLOOM 是什么。然后,它介绍了 BLOOM 的技术规范以及如何使用它,然后强调了它的局限性和道德考虑。
BigScience 大型开放科学开放获取多语言模型(简称 BLOOM)代表了语言模型技术民主化的重大进步。
BLOOM由来自39个国家的1200多名参与者共同开发,是全球努力的产物。该项目由 BigScience 与 Hugging Face 和法国 NLP 社区合作协调,超越了地理和机构的界限。
它是一个开源的、仅解码器的转换器模型,具有 176B 参数,在 ROOTS 语料库上训练,该语料库是 59 种语言的数百个来源的数据集:46 种口语和 13 种编程语言。
下面是训练语言分布的饼图。
训练语言的分布
该模型被发现在各种基准测试中都取得了显着的性能,并且在多任务提示微调后获得了更好的结果。
该项目在巴黎的Jean Zay超级计算机上进行了为期117天(3月11日至7月6日)的培训课程,并得到了法国研究机构CNRS和GENCI的大量计算资助。
BLOOM不仅是一个技术奇迹,也是国际合作和集体科学追求力量的象征。
现在,让我们更详细地描述一下 BLOOM 的架构,它涉及多个组件。
Bloom 架构
如本文所述,BLOOM 模型的架构包括几个值得注意的方面:
这些组件反映了团队专注于平衡创新与成熟技术,以优化模型的性能和稳定性。
除了 BLOOM 的架构组件之外,让我们了解另外两个相关组件:数据预处理和提示数据集。
在此示例中,我们将使用 BLOOM 生成创意故事。提供的代码结构用于设置环境、准备模型并根据给定提示生成文本。相应的源代码可在 GitHub 上找到,它在很大程度上受到了 amrrs 教程的启发。
BLOOM 模型是资源密集型的,因此正确配置工作区至关重要,主要步骤如下所述。
首先,Transformer 库用于提供用于处理 BLOOM 模型和其他基于 transformer 的节点的接口。
pip install transformers -q
使用 nvidia-smi,我们检查可用 GPU 的属性,以确保我们拥有运行模型所需的计算资源
nvidia-smi
我们从 transformers 和 torch 中导入所需的模块。torch 用于设置默认张量类型以利用 GPU 加速。
然后,由于我们使用的是 GPU,因此使用 set_default_tensor_type 函数设置 torch 库以确保使用 GPU。
from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
import torch
torch.set_default_tensor_type(torch.cuda.FloatTensor)
正在使用的目标模型是 70 亿参数的 BLOOM 模型,可以从 bigscience/bloom-1b7 下的 BigScience 的 Hubbing Face 存储库访问它,该存储库对应于模型的唯一标识符。
model_ID = "bigscience/bloom-1b7"
接下来,我们从 Hugging Face 加载预训练的 BLOOM 模型和分词器,并使用具有任意数字的 set_seed 函数为可重复性设置种子。数字本身的值并不重要,但使用非浮动值很重要。
model = AutoModelForCausalLM.from_pretrained(model_ID, use_cache=True)
tokenizer = AutoTokenizer.from_pretrained(model_ID)
set_seed(2024)
现在,我们可以定义要生成的故事的标题以及提示。
story_title = 'An Unexpected Journey Through Time'
prompt = f'This is a creative story about {story_title}.\n'
最后,我们将提示标记化并映射到适当的模型设备,然后在解码后生成模型的结果。
input_ids = tokenizer(prompt, return_tensors="pt").to(0)
sample = model.generate(**input_ids,
max_length=200, top_k=1,
temperature=0, repetition_penalty=2.0)
generated_story = tokenizer.decode(sample[0], skip_special_tokens=True)
最终结果使用 textwrap 模块进行格式化,以确保每行的最大字符数为 80 个,以提高可读性。
import textwrap
wrapper = textwrap.TextWrapper(width=80)
import textwrap
wrapper = textwrap.TextWrapper(width=80)
最终结果如下:
使用 BLOOM 模型生成的故事
只需几行代码,我们就能够使用 BLOOM 模型生成有意义的内容。
像所有技术进步一样,BLOOM也有自己的一套合适和不合适的应用程序。本节深入探讨了其适当和不适当的用例,重点介绍了哪些方面可以最好地利用其功能,哪些地方建议谨慎行事。了解这些界限对于负责任和有效地利用 BLOOM 的潜力至关重要。
BLOOM 是一个多功能工具,旨在突破语言处理和生成的界限。它的预期用途跨越各个领域,每个领域都利用其广泛的语言功能。
了解 BLOOM 的局限性对于确保其合乎道德和实际应用至关重要。一些用例超出了 BLOOM LLM 的适用范围,主要是出于道德考虑或技术限制。
BLOOM 作为一种先进的大型语言模型 (LLM),提供了广泛的优势,可以扩展到各种用户群。它的能力不仅直接影响某些专业人士和部门,而且具有更广泛的影响,间接影响更广泛的利益相关者。
对 BLOOM 用户的探索旨在强调不同群体如何利用这一创新工具并受到其影响。
通过了解 BLOOM 的直接和间接用户,我们可以欣赏该模型的广泛影响力以及它为推动技术和社会进步做出贡献的多种方式。
与任何大型语言模型 (LLM) 一样,BLOOM 的部署会带来一系列伦理方面的考虑和限制。这些方面对于了解负责任的使用和预测该技术的更广泛影响至关重要。本节介绍与使用 BLOOM 相关的伦理影响、风险和固有限制。
BLOOM 的开发和发布在现实世界中具有重大影响,无论是在其影响方面还是在它引发的争议方面。本节以 BLOOM 研究论文的见解为基础,讨论了这些方面。
在快节奏的人工智能 (AI) 世界中,像 BLOOM 这样的大型语言模型 (LLM) 的相关性是一个持续讨论的话题。
BLOOM由庞大的国际研究人员团队开发,是语言处理领域的重大飞跃。然而,人工智能领域在不断发展,新模型的出现并转移了焦点。
让我们来看看 BLOOM 是否仍然在这个竞争激烈的领域站稳脚跟。
本文概述了 BLOOM 项目,该项目对不断发展的大型语言模型领域做出了重大贡献。
我们探讨了 BLOOM 的发展,重点介绍了其技术规格及其创建背后的合作。该文章还作为访问和有效利用 BLOOM 的指南,强调了其适当的用途和局限性。
此外,它还涵盖了 BLOOM AI 项目的伦理影响和现实世界影响,反映了其在当今 AI 领域的接受度和相关性。无论您是直接参与 AI 还是爱好者,对 BLOOM 的探索都为驾驭大型语言模型的复杂世界提供了重要的视角。