模型概述
模型特點
模型能力
使用案例
🚀 項目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大語言模型是一個基礎模型,適合進一步開發和微調。鼓勵用戶根據應用的特定需求對模型進行調整和優化。
微調建議
- 明確特定需求:清晰定義用例的要求,以指導微調過程。
- 整理有針對性的數據:確保訓練數據相關且質量高,以提高模型性能。
- 持續評估:在微調過程中和之後定期評估模型的性能,以保持準確性並減少偏差。
本免責聲明旨在讓用戶清楚瞭解模型的能力和侷限性,促進其有效應用和開發。



