模型简介
模型特点
模型能力
使用案例
🚀 项目Indus大语言模型介绍
项目Indus大语言模型是一款开创性的开源语言模型,专为印地语及其方言量身定制,旨在提升自然语言处理和生成能力,广泛应用于各种印度语言相关的场景。
🚀 快速开始
要开始在你的项目中使用项目Indus大语言模型,请按照以下步骤设置和运行模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("nickmalhotra/ProjectIndus")
tokenizer = AutoTokenizer.from_pretrained("nickmalhotra/ProjectIndus")
# 示例推理
def format_template(user_prompt):
messages = [
{"role": "user", "content": user_prompt},
]
response = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
return response
user_prompt = """भारत के वर्तमान प्रधानमंत्री कौन हैं?"""
input_ids = format_template(user_prompt)
# 使用模型生成文本
output = model.generate(input_ids,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.eos_token_id,
max_length=1024,
num_beams=5,
do_sample=True,
early_stopping=True,
temperature=0.7,
top_k=50,
top_p=0.95,
repetition_penalty=1.2,
no_repeat_ngram_size=3,
num_return_sequences=1,
)
print(tokenizer.decode(output[0], skip_special_tokens=False))
✨ 主要特性
- 专为印度语言设计:项目Indus大语言模型旨在为印度语言提供强大的语言模型,从印地语及其方言开始,方便研究人员和开发者针对印度语言的多样性进行集成和进一步开发。
- 开源基础模型:该模型是一个在印地语及其方言上进行预训练和指令微调的模型,基于GPT - 2架构从头构建,从分词器到解码器都进行了优化。
- 多领域应用:可用于问答和印地语及其方言的对话,经过奖励调整后可应用于多个行业,如呼叫中心、医疗保健、汽车和电信等。
📦 模型详情
模型描述
项目Indus大语言模型旨在为印度语言提供强大的语言模型,从印地语及其方言开始。这个托管在Hugging Face上的开源基础模型,便于专注于印度语言多样性的研究人员和开发者进行集成和进一步开发。
- 开发者:Nikhil Malhotra、Nilesh Brahme、Satish Mishra、Vinay Sharma(Makers Lab, TechMahindra)
- 模型类型:基础语言模型
- 语言:印地语(hin)、博杰普尔语(bho)、迈蒂利语(mai)、多格里语(doi)
- 许可证:其他
- 父模型:基于GPT - 2架构从头构建的模型,从分词器到解码器
- 更多信息资源:<https://www.techmahindra.com/en - in/innovation/the - indus - project/>
📚 使用说明
直接使用
项目Indus可以直接用于生成文本、模拟对话和其他文本生成任务,无需额外训练。
下游使用
可用于印地语及其方言的问答和对话。该模型经过奖励调整后可应用于多个行业:
- 呼叫中心
- 医疗保健
- 汽车
- 电信
超出适用范围的使用
项目Indus不适用于高风险决策任务,如医疗诊断或法律咨询,目前也不能用于填空练习、多问答等应用。
🔧 偏差、风险和局限性
偏差与风险
大量研究探讨了语言模型的偏差和公平性问题(例如,[Sheng等人(2021)](https://aclanthology.org/2021.acl - long.330.pdf)和Bender等人(2021))。该模型生成的预测可能包含针对受保护类别、身份特征以及敏感、社会和职业群体的有害刻板印象。尽管在训练数据中尽力消除了各种偏差,但由于该模型是生成式模型,仍可能产生幻觉内容。模型产生的任何有害刻板印象纯属无意和巧合。
建议
建议避免模型中的偏差和负面含义,定期更新并结合社区反馈对于解决任何新出现的偏差或滥用情况至关重要。
🔧 训练详情
基础设施
- 训练基础设施:利用CDAC提供的高性能计算资源,配备NVIDIA A100 GPU。
- 运行基础设施:在GPU(NVIDIA GeForce RTX 3070或更高)和CPU(Intel Xeon Platinum 8580)环境中进行了测试。
训练数据
项目Indus大语言模型在一个多样化且广泛的数据集上进行训练,该数据集包含各种印地语文本及其方言。数据收集和整理过程经过精心设计,以适应印度语言的多样性和复杂性,特别关注印地语及其37种方言。
数据来源和收集
数据主要分为三个类别收集:
- 开源印地语数据:包括互联网上不同类别的公开可用资源,如新闻和非新闻。使用自动化脚本从网页上抓取和提取文本。部分来源如下:
- 新闻:新闻门户网站的文章。
- 非新闻:包括维基百科、commoncrawl.org等多样化来源,以及像全印广播电台的“Man ki Baat”等具有文化意义的内容。
- 翻译数据:将一部分用于训练AI模型的大型英语数据集Pile翻译成印地语,使用了三种不同的翻译模型。基于准确性和效率,最终选择了IndicTrans2(AI4Bharat)作为最佳模型。
- 方言数据:由于互联网上可用的方言材料有限,方言数据收集面临独特挑战。主要方言如迈蒂利语、博杰普尔语、摩揭陀语和布拉吉语的数据从多个来源收集,包括实地工作,代表们收集旧书籍和其他文本,然后进行数字化并转换为文本数据。
训练过程
训练包括广泛的预处理步骤,以清理和标准化文本,然后在高性能计算环境中进行监督学习。
- 预训练:在包含220亿个标记的数据集上使用先进的分词技术进行。
- 微调:针对印度语言进行有监督的微调,使用专门为文化、政治和社会背景定制的数据集。
阶段 | 数据源 | 标记数量 | 备注 |
---|---|---|---|
预训练 | 清理后的印地语及其方言数据集 | 220亿 | 使用先进的分词技术 |
微调 | 针对印度语言定制的数据集 | 不同 | 关注文化、政治和社会背景 |
预处理
收集的数据经过多个阶段的清理和预处理,以确保高质量和可用性:
- 清理:清理数据中的不需要的文本、字符和个人信息,如手机号码。必要时进行音译,并去除从网页抓取的不需要的标签。
- 偏差去除:开发了一个偏差去除工具包,用于检测和去除训练数据中的偏差语言,确保用于训练模型的文本符合道德、正确且具有社会责任感。
- 分词:使用专门为印地语及其方言开发的自定义分词器对数据进行分词。该分词器基于字节对编码(BPE),并采用了字节回退等额外机制,以有效处理印地语脚本的特点。
总结
最终用于训练的数据集包括:
- 原始数据大小:收集了超过500 GB的原始数据。
- 清理和整理后的数据:约200 GB的干净印地语及其方言文本数据。
- 分词:使用从清理后的数据创建的220亿个标记进行预训练。
这种多样化和广泛的训练数据基础使项目Indus大语言模型能够发展出强大的理解和生成印地语文本的能力,成为需要印度语言处理的应用程序的强大工具。
🔧 评估
印度大语言模型排行榜结果
项目Indus大语言模型使用印度大语言模型排行榜进行评估,该排行榜采用了专门为评估印度语言任务模型而设计的indic_eval
评估框架。该框架提供了模型在各种针对印度语言的基准测试中的全面性能视图。
可在[Hugging Face印度大语言模型排行榜](https://huggingface.co/spaces/Cognitive - Lab/indic_llm_leaderboard)上查看印度大语言模型排行榜(α)的详细结果,如下所示:
任务 | 版本 | 指标 | 值 | ± | 标准误差 |
---|---|---|---|---|---|
所有任务 | acc | 0.2891 | 0.0109 | ||
acc_norm | 0.3013 | 0.0112 | |||
indiceval:ARC - Challenge:hindi:10 | 0 | acc | 0.2167 | 0.0120 | |
acc_norm | 0.2474 | 0.0126 | |||
indiceval:ARC - Easy:hindi:5 | 0 | acc | 0.3615 | 0.0099 | |
acc_norm | 0.3552 | 0.0098 |
这些结果突出了模型在受控测试条件下理解和生成印地语文本的能力。标准误差值表示评估过程中观察到的方差,提供了模型在不同评估运行中性能一致性的见解。
开放大语言模型排行榜评估结果
此外,项目Indus大语言模型还在开放大语言模型排行榜上进行了评估,该排行榜通过将模型性能与其他先进的语言模型进行比较,提供了另一层基准测试。以下是开放大语言模型排行榜的总结结果:
指标 | 值 |
---|---|
平均值 | 20.07 |
AI2推理挑战(25 - 样本) | 22.70 |
HellaSwag(10 - 样本) | 25.04 |
MMLU(5 - 样本) | 23.12 |
Winogrande(5 - 样本) | 49.57 |
可以在Hugging Face开放大语言模型排行榜上进一步探索这些基准测试结果。
评估背景
评估指标acc
(准确率)和acc_norm
(归一化准确率)用于量化模型的性能。任务根据其难度和使用的特定数据集进行区分,例如ARC挑战和ARC简单集,都适应了印地语条件以确保相关评估。这种结构化评估确保了Indus大语言模型不仅在通用文本生成任务中表现良好,而且在与印度语言框架相关的更专业、特定上下文的场景中也能表现出色。
结果
项目Indus在文本生成任务中表现出有竞争力的性能,这在标准化基准测试的得分中得到了体现。
🔧 技术规格
模型架构和目标
项目Indus大语言模型基于类似GPT - 2.0的架构,针对印地语及其方言的复杂性进行了定制。该模型旨在作为基础模型,可针对各种应用进行微调,使其在印度语境的不同领域具有高度的通用性和适应性。
- 架构细节:
- 层数:22个Transformer层,提供了一个能够理解复杂语言模式的深度神经网络。
- 注意力头:每层32个注意力头,有助于在输入数据的不同部分实现广泛的注意力机制。
- 嵌入大小:2048,允许模型在数据中表示各种信息和细微差别。
- 词汇表大小:32,300,包含训练数据中全面的印地语单词和常用短语。
该模型的目标是为印地语及其方言的文本生成和理解提供强大的工具,支持开发需要这些语言自然语言处理的应用程序。它还旨在弥合印度语言在技术领域代表性不足的差距,为进一步的语言研究和技术融合提供平台。
计算基础设施
硬件
项目Indus大语言模型的预训练和微调在由先进计算发展中心(CDAC)提供的高性能计算基础设施上进行。该设置包括:
- 节点和GPU:使用六个节点,每个节点配备八个NVIDIA A100 GPU。这些GPU是机器学习任务的先进设备,提供处理大量数据和复杂模型架构所需的计算能力。
- 内存和存储:每个节点配备充足的内存和存储,以有效处理数据集和模型参数。具体配置包括每张卡40 GB的GPU内存,这对于训练大型模型至关重要。
在GPU和CPU上都测试了推理性能:
- GPU:在NVIDIA GeForce RTX 3070 GPU上,对于250 - 350个标记,推理时间约为5 - 10秒。
- CPU:在英特尔至强(R)铂金8580 CPU上,性能与GPU相当,吞吐量超过30个标记/秒。
软件
软件环境对于高效训练和运行模型至关重要。关键组件包括:
- 操作系统:Linux,因其稳定性和对高性能计算任务的支持而被选择。
- 机器学习框架:PyTorch,因其在训练深度学习模型方面的灵活性和效率而被使用。它支持广泛的并行处理和GPU加速,这对于训练像项目Indus大语言模型这样的大型模型至关重要。
- 作业调度器:使用SLURM(简单Linux资源管理实用程序)来有效管理和分配分布式系统中的资源,确保训练作业的最佳调度,避免资源竞争。
📄 引用
@article{malhotra2024projectindus,
title={Project Indus: A Foundational Model for Indian Languages},
author={Malhotra, Nikhil and Brahme, Nilesh and Mishra, Satish and Sharma, Vinay},
journal={Tech Mahindra Makers Lab},
year={2024},
url={https://www.techmahindra.com/en-in/innovation/the-indus-project/}
}
APA格式: Malhotra, N., Brahme, N., Mishra, S., & Sharma, V. (2024). Project Indus: A Foundational Model for Indian Languages. Tech Mahindra Makers Lab. Available at <https://www.techmahindra.com/en - in/innovation/the - indus - project/>
📚 术语表
本术语表解释了整个模型文档和技术细节中使用的关键术语,帮助不熟悉某些概念的用户更好地理解内容。
- Transformer层:神经网络架构的一部分,使用自注意力机制处理文本等序列数据,对自然语言处理任务至关重要。
- 注意力头:模型层的子单元,允许模型在进行预测时关注输入序列的不同部分。
- 嵌入大小:用于以密集数值形式表示每个标记或单词的向量大小。较大的嵌入可以捕获更详细的信息。
- 块大小:模型在一次操作中可以处理的输入标记的最大长度。
- 词汇表大小:模型能够理解和生成的唯一单词或标记的总数。
📚 更多信息
如需了解项目Indus大语言模型的更多详细信息,包括额外的文档、教程和社区讨论,请访问以下资源:
- 项目仓库:Hugging Face仓库
- Tech Mahindra Makers Lab:可在[Tech Mahindra创新页面](https://www.techmahindra.com/en - in/innovation/makers - lab/)上了解项目Indus背后的研发见解。
- 社区论坛:在Hugging Face论坛上与社区互动,获取支持、进行头脑风暴并分享与项目Indus相关的新想法。
📚 模型卡片作者
项目Indus大语言模型的模型卡片和文档由以下人员共同撰写:
- Nikhil Malhotra:Tech Mahindra首席创新官。
- Nilesh Brahme:资深AI研究科学家,项目Indus开发的主要贡献者之一。
- Satish Mishra:AI架构师,其见解显著影响了模型的能力。
- Vinay Sharma:专注于项目Indus语言数据处理和模型训练方面的大语言模型工程师。
📚 模型卡片联系方式
如需咨询、支持或获取关于项目Indus大语言模型的更多信息,请通过以下渠道联系:
- 电子邮件:projectindus@techmahindra.com - 用于直接查询和专业交流。
- GitHub问题:对于技术问题、功能请求或贡献,请使用[项目Indus GitHub仓库](https://github.com/Tech - Mahindra - Makers - Lab/Indus - 1.1B)的问题部分。
- Hugging Face空间:与模型实现和社区项目相关的问题和讨论可以发布在我们在Hugging Face上的专用空间中。
📚 免责声明
模型局限性
项目Indus大语言模型采用单指令微调进行训练,可能会导致产生幻觉内容,即模型生成看似合理但不准确的信息。用户应谨慎使用,特别是在需要高事实准确性的场景中。
特定用例适配
项目Indus大语言模型是一个基础模型,适合进一步开发和微调。鼓励用户根据应用的特定需求对模型进行调整和优化。
微调建议
- 明确特定需求:清晰定义用例的要求,以指导微调过程。
- 整理有针对性的数据:确保训练数据相关且质量高,以提高模型性能。
- 持续评估:在微调过程中和之后定期评估模型的性能,以保持准确性并减少偏差。
本免责声明旨在让用户清楚了解模型的能力和局限性,促进其有效应用和开发。



