随着 DeepSeek 模型的发布,中国的人工智能实验室已经开始采用“开放”的方法来开发具有卓越推理能力的人工智能模型。此外,谷歌上个月也加入了这一行列,推出了基于 Gemini 2.0 框架的轻量级开放模型 Gemma 3。同样,为了在这个生态系统中迈出一步,并支持 OpenAI 中的“开放”,科技巨头 OpenAI 正计划在不久后发布一个新的“开放权重”人工智能模型。这将是 OpenAI 自 2019 年发布 GPT 2 以来的首个开放重量级模型。
随着越来越多的人使用大型语言模型(LLM),“开放权重”和“开源模型”等术语变得很常见。但究竟什么是开放权重和开源模型呢?本文将解释模型权重、开放权重和开源模型之间的区别,以及为什么这对开发人员和研究人员很重要。
什么是LLM中的权重?
在机器学习中,权重是模型在训练过程中学习到的数字。这些数字控制着模型如何将输入数据转化为预测结果。在 LLM 中,权重存储了从训练数据中学到的知识。权重越大的模型通常可以学习到更复杂的语言模式。
在训练过程中,模型会根据所看到的数据调整权重。它试图使预测更加准确。训练结束后,开发人员可以保存这些权重。这样,其他人就可以使用训练好的模型,而无需再次进行训练,从而节省了时间和资源。
以下是根据参数划分的 LLM 类型:
开放权重模型指的是一种大型语言模型(LLM),在这种模型中,模型的参数(又称“权重”)是公开的。这意味着任何人都可以下载、检查、使用或微调该模型,而不会遇到任何许可壁垒或专有限制。
与封闭或专有模型不同的是,开放权重模型的发布通常是为了鼓励研究、实验和社区驱动的创新。它们通常用于学术环境、初创企业或独立开发者,这些人希望突破这些模型的极限,或者只是在引擎盖下修修补补。
最大的优点是什么?它们有助于提高人工智能研究的透明度和可重复性。当权重开放时,其他研究人员可以验证结果、测试能力,或将其作为新工作的基准。这就像科学有了更好的版本控制。
现在,这里有一个重要的细微差别:开放权重≠开源。开源模型可以让你访问所有内容–架构、训练代码、数据集(有时)和权重–而开放权重模型只发布最终训练好的参数。你得不到完整的配方,只有最后的菜肴。
什么是开放权重模型?
“开放权重 “是指模型的训练权重可供公众使用。任何人都可以下载这些权重。只要有合适的计算机系统,他们就可以在自己的应用程序中使用这些权重。开放权重可以让开发人员使用强大的预训练模型来完成编写文本或理解情感等任务。这就避免了从一开始就训练模型的高昂成本和时间。
开放式权重的主要优势在于可访问性。开发人员可以在他们的项目中快速使用高级模型。这有助于推动新思路的产生。然而,开放权重并不总是意味着模型的设计或训练数据也是公开的。用户可能会获得模型的能力,但却不知道它究竟是如何建立或训练的。
让我们来看几个例子
- Llama 3(来自 Meta): Meta 发布了各种 Llama 3 模型大小的权重。虽然权重可以获得,但它们附带了特定的许可证,其中包括使用限制,尤其是对基于该权重进行商业化服务的大型公司而言。训练过程的细节部分被共享,但从传统软件的意义上讲,它并不是完全开源的。
- Mistral 7B(来自 Mistral AI): 该模型因其相对于其规模的强大性能而广受欢迎。其权重是根据 Apache 2.0 许可发布的,因此可以广泛使用。虽然比 Llama 的许可证更为开放,但其重点主要在于提供权重和基本使用代码。
什么是开源模型?
“开源模型 “是一个更广泛的概念。开源模型通常包括权重、完整的源代码、指南,通常还有训练数据。这种开放性可以让开发人员看到模型是如何工作的。他们可以改变模型,甚至用新数据重新训练模型。
开源方法支持团队合作和社区开发。开发人员可以帮助改进模型、查找错误并分享更改。这种群策群力的方式可以使模型更强大、更有用。使用和更改开源模型可能需要更多的技术知识,这对某些人来说可能是个挑战。
让我们来看几个例子
- BLOOM(BigScience Large Open-science Open-access Multilingual Language Model): 这是一项涉及众多研究人员的大型合作项目。该模型的权重、代码及其大量多语言训练数据的详细信息均以 RAIL 开放许可的形式发布,旨在实现负责任的使用。
- GPT-2(来自 OpenAI): GPT-2 是 OpenAI 发布的具有里程碑意义的版本,虽然现在已经过时,但 OpenAI 在该版本中公开了模型代码和权重,促进了社区中的大量研究和开发工作。
- Falcon 模型(来自 TII): 这些模型(如 Falcon-40B 和 Falcon-180B)在 Apache 2.0 许可下发布了权重和代码,允许广泛的商业和研究使用。
开放权重和开源模型之间的主要差异
- 透明度:开源模型会显示所有信息,包括设计和训练数据。开放权重模型可能只共享训练数据。
- 可修改性:您可以根据特定需求更改和重新训练开源模型。除非基础模型也是开源的,否则通常无法更改开放权重模型。
- 社区:开源模型的开发需要社区的参与。开放权重模型通常没有这种程度的群体工作。
- 易用性:对于那些只想快速使用模型而不想研究其设计的开发人员来说,开放权重模型更容易使用。
第三角色:闭源模型
将这些模型与闭源模型进行比较也很有帮助。公司拥有这些模型。它们不会公开共享模型设计、权重或训练数据。人们通常通过公司提供的特定软件或工具来使用这些模型。这些软件或工具通常需要通过许可证或订阅付费。专有模型可能易于使用,并得到公司的支持。但它们的透明度很低,用户无法更改。
比较模型类型:开放权重、开放源代码、封闭源代码
本表显示了主要区别:
特征 | 开放权重模型 | 开源模型 | 闭源模型 |
定义 | 训练模型权重公开。 | 公开完整的模型细节(代码、权重、常用数据)。 | 模型细节为私人所有,归公司所有。 |
透明度 | 低;只共享权重。 | 高;可提供全部模型细节。 | 低;用户无法看到模型内部。 |
可修改程度 | 无法更改模型设计。 | 用户可以更改、重新训练和调整模型。 | 用户不能更改模型。 |
社区 | 社区在开发中的作用很小。 | 强大的社区作用;人们可以做出贡献。 | 没有社区角色;公司控制开发。 |
易用性 | 通常很容易使用权重进行部署。 | 可能需要技术技能才能使用和更改。 | 通常界面简单,但选项有限。 |
成本 | 权重通常免费;可能需要支付计算机费用。 | 模型通常免费;可能需要支付计算机/托管费用。 | 通常需要付费(许可证或订阅)。 |
支持 | 支持有限;依赖文档或论坛。 | 社区提供支持。 | 公司通常提供支持,可能需要额外付费。 |
适用于 | 快速使用,尝试各种想法。 | 研究、学习、需要改变的项目。 | 企业需要受支持的工具,但无需更换。 |
道德规范 | 训练数据不清晰或可能存在偏差。 | 透明度有助于社区检查道德规范。 | 缺乏透明度,引起潜在的数据使用问题。 |
对开发人员和研究人员意味着什么?
在开放权重、开源或专有模型之间做出选择会影响工作。开放权重模型适合在一项任务中快速使用。开源模型适用于需要更改、明确理解或社区帮助的项目。专有模型适用于易用性和公司支持最重要且不需要更改的情况。
这种选择还涉及对负责任的人工智能开发的思考。公平使用数据、明确培训内容和确保问责制都很重要。开发人员应考虑其选择的影响。
如何使用开放重量模型?
以下是使用 Hugging Face transformers 库的简单示例:
设置
首先,安装所需的库:
!pip install transformers torch
1. 使用开放权重
本例使用 Mistral 7b。这是一个具有开放权重的模型。我们用它来生成文本。
让我们对模型进行量化,使其在本地机器上运行。
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, pipeline import torch bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, )
2. 使用 HuggingFace transformers 加载模型
model_name = "mistralai/Mistral-7B-Instruct-v0.2” tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, load_in_4bit=True, quantization_config=bnb_config, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True, )
3. 让我们定义管道,以方便推断
pipe = pipeline( "text-generation", model=model, tokenizer = tokenizer, torch_dtype=torch.bfloat16, device_map="auto" )
4. Performing inferencing
prompt = "As a data scientist, can you explain the concept of regularization in machine learning?" sequences = pipe( prompt, do_sample=True, max_new_tokens=100, temperature=0.7, top_k=50, top_p=0.95, num_return_sequences=1, ) print(sequences[0]['generated_text'])
输出
In machine learning, regularization is the process of preventing overfitting. Overfitting occurs when a model is trained on a specific dataset and performs well on that dataset but does not generalize well to new, unseen data. Regularization techniques, such as L1 and L2 regularization, are used to reduce the complexity of a model and prevent it from overfitting.
如何使用开源模型?
本例使用 GPT 2。这是一个开源模型,用于文本生成。因为它是开源的,所以你可以查看它的代码或进行修改。
from transformers import TFGPT2LMHeadModel, GPT2Tokenizer #get large GPT2 tokenizer and GPT2 model tokenizer = GPT2Tokenizer.from_pretrained("gpt2-large") GPT2 = TFGPT2LMHeadModel.from_pretrained("gpt2-large", pad_token_id=tokenizer.eos_token_id)
进行文本生成
input_sequence = "I don't know about you, but there's only one thing I want to do after a long day of work" # encode context the generation is conditioned on input_ids = tokenizer.encode(input_sequence, return_tensors='tf') # generate text until the output length (which includes the context length) reaches 50 greedy_output = GPT2.generate(input_ids, max_length = MAX_LEN) print(tokenizer.decode(greedy_output[0], skip_special_tokens = True))
输出
I don't know about you, but there's only one thing I want to do after a long day of work: go to the gym.I'm not talking about the gym that's right next to my house. I'm talking about the gym that's right next to my office.
最终,GPT 2 成功生成了文本。
小结
了解开放权重和开源模型之间的区别,有助于您在 LLM 世界中游刃有余。开放权重可以方便地使用预先训练好的模型。开源模型提供透明度、修改能力和社区支持。闭源模型提供了便利和支持,但限制了访问和控制。
随着人工智能的不断发展,了解这些选项有助于开发人员和研究人员根据自己的目标、资源和价值观选择最佳方法。同时,我也热切期待着 OpenAI 的开放权重模型的发布,请在下面的评论区告诉我您对该模型的期望。
评论留言