LMFlow
May 21, 2026 · View on GitHub
LMFlow
English | 简体中文 | Español | 日本語 | 한국어 | हिंदी
Note
This README file was translated by LLM for reference only. Hindi speakers are welcome to submit PRs to polish the document!
Note
यह चैटजीपीटी द्वारा अनुवादित हिंदी संस्करण है, यदि कोई त्रुटि हो, तो संबंधित योगदानकर्ताओं द्वारा संशोधित किया जा सकता है। इसके साथ ही यदि कोई सामग्री अंग्रेजी संस्करण से भिन्न हो या मेल नहीं खाती हो, तो कृपया अंग्रेजी संस्करण को ही मान्य रखें। धन्यवाद।
एक विस्तारयोग्य, सुविधाजनक और दक्ष टूलबॉक्स जो बड़े मशीन लर्निंग मॉडल को finetune करने के लिए बनाया गया है, जो सभी समुदाय के उपयोगकर्ताओं के लिए उपलब्ध होने के साथ-साथ उपयोगकर्ता मित्रता, गति और विश्वसनीयता के साथ डिजाइन किया गया है।
Latest News
- [2024-04-25] :rocket: बातचीत टेम्पलेट का समर्थन! हमने नवीनतम Llama-3 और Phi-3 बातचीत टेम्पलेट को पूर्वनिर्धारित किया है, साथ ही कुछ अक्सर प्रयुक्त टेम्पलेट जैसे
chatmlभी (सभी टेम्पलेट यहाँ देखें यहाँ), और हम अधिक पूर्वनिर्धारित टेम्पलेट जोड़ने पर काम कर रहे हैं। शैल अनुक्रम में संबंधित--conversation_templateको शैल अनुक्रम में जोड़ें और आप तैयार हैं! :rocket: - [2024-03-27] LISA का समर्थन —— 24जीबी जीपीयू पर 7B मॉडल का प्रशिक्षण बिना ऑफलोडिंग के!
- [2023-09-11] स्पेक्युलेटिव डिकोडिंग का समर्थन, इस्तेमाल के तरीके और साधारण प्रदर्शन आँकड़े देखने के लिए उपयोग गाइड पर क्लिक करें।
- [2023-08-14] पोजीशन इंटरपोलेशन के माध्यम से LLaMA की संदर्भ विंडो को विस्तारित करने का समर्थन (लीनियर और NTK स्केलिंग)।
- [2023-08-07] फ्लैश एटेंशन-2 का समर्थन, अधिक जानकारी के लिए फ्लैश एटेंशन उपयोग गाइड देखें।
Table of Contents
Quick Start
Setup
हमारे रेपो को Linux (Ubuntu 20.04) पर परीक्षण किया गया है। अन्य ऑपरेटिंग सिस्टम प्लेटफॉर्म (macOS, Windows) को पूरी तरह से परीक्षण नहीं किया गया है, इसलिए कुछ अप्रत्याशित त्रुटियों का सामना हो सकता है। पहले Linux या Windows WSL पर प्रयोग करने, या Google Colab का उपयोग करने की सिफारिश की जाती है।
git clone -b v1.0.0 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
वैकल्पिक निर्भरताएँ (Optional dependencies)
ऊपर दिया गया बेस इंस्टॉल पूर्ण / LoRA / LISA फ़ाइन-ट्यूनिंग और HuggingFace बैकएंड इंफरेंस के लिए पर्याप्त है। नीचे दी गई सुविधाएँ extras के माध्यम से सक्षम होती हैं — केवल वही इंस्टॉल करें जिसकी आपको आवश्यकता है:
| Extra | क्या सक्षम होता है | इंस्टॉल कमांड |
|---|---|---|
vllm | vLLM-आधारित इंफरेंस और iterative DPO | pip install -e ".[vllm]" |
sglang | SGLang-आधारित इंफरेंस और iterative DPO | pip install -e ".[sglang]" |
trl | DPO / iterative DPO ट्रेनिंग | pip install -e ".[trl]" |
deepspeed | DeepSpeed इंटीग्रेशन | pip install -e ".[deepspeed]" |
flash_attn | Flash Attention 2 | pip install -e ".[flash_attn]" |
ray | डिस्ट्रिब्यूटेड reward model इंफरेंस | pip install -e ".[ray]" |
multimodal | मल्टीमॉडल मॉडल | pip install -e ".[multimodal]" |
gradio | Gradio चैटबॉट UI | pip install -e ".[gradio]" |
flask | Flask डिप्लॉयमेंट | pip install -e ".[flask]" |
Extras को मिलाया जा सकता है: vLLM के साथ iterative DPO के लिए pip install -e ".[vllm,trl]", या SGLang संस्करण के लिए ".[sglang,trl]"।
Important
vLLM और SGLang असंगत CUDA / PyTorch संस्करणों पर निर्भर हैं और इन्हें एक ही environment में इंस्टॉल नहीं करना चाहिए। यदि दोनों चाहिए, तो अलग-अलग conda environments बनाएँ (जैसे lmflow-vllm और lmflow-sglang)।
Prepare Dataset
आप हमारी आधिकारिक दस्तावेज़ीकरण (अंग्रेजी में) को देखें। आधिकारिक दस्तावेज़ीकरण अनुवाद के प्रक्रिया में है, कृपया धैर्य रखें।
Fine-Tuning (Full)
मॉडल को पूर्ण पैरामीटर फ़ाइन ट्यूनिंग करने से सभी पैरामीटर अपडेट होते हैं। GPT-2 का एक पूर्ण पैरामीटर फ़ाइन ट्यूनिंग का उदाहरण निम्नलिखित है:
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune.sh \
--model_name_or_path gpt2 \
--dataset_path data/alpaca/train_conversation \
--output_model_path output_models/finetuned_gpt2
Tip
आप बातचीत डेटासेट के लिए बातचीत टेम्पलेट को निर्दिष्ट करने के लिए --conversation_template पैरामीटर को जोड़कर कर सकते हैं।
उदाहरण: Llama-3-8B के लिए बातचीत डेटासेट टेम्पलेट का निर्दिष्ट करें
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune.sh \
--model_name_or_path meta-llama/Meta-Llama-3-8B \
--dataset_path data/alpaca/train_conversation \
--conversation_template llama3 \
--output_model_path output_models/finetuned_llama3_8b
Fine-Tuning (LISA)
LISA एक मेमरी-एफिशिएंट (memory-efficient) फ़ाइन ट्यूनिंग एल्गोरिदम है, जो मेमरी और रैंडम अनफ्रोज़न लेयरों के बीच संतुलन स्थापित करता है। निम्नलिखित स्क्रिप्ट अब एकल GPU पर ही टेस्ट किया गया है। हमारे नवीनतम अपडेट पर ध्यान दें! :smile:
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune_with_lisa.sh \
--model_name_or_path meta-llama/Llama-2-7b-hf \
--dataset_path data/alpaca/train_conversation \
--output_model_path output_models/finetuned_llama2_7b \
--lisa_activated_layers 1 \
--lisa_interval_steps 20
Tip
उदाहरण: Llama-2-7B के लिए बातचीत डेटा सेट टेम्पलेट का निर्दिष्ट करें
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune_with_lisa.sh \
--model_name_or_path meta-llama/Llama-2-7b-hf \
--dataset_path data/alpaca/train_conversation \
--conversation_template llama2 \
--output_model_path output_models/finetuned_llama2_7b_lisa \
--lisa_activated_layers 1 \
--lisa_interval_steps 20
Fine-Tuning (LoRA)
LoRA एक पैरामीटर-सुसंगत (parameter-efficient) फाइन-ट्यूनिंग एल्गोरिथ्म है जो पूर्ण-पैरामीटर फाइन-ट्यूनिंग से अधिक दक्ष है।
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune_with_lora.sh \
--model_name_or_path facebook/galactica-1.3b \
--dataset_path data/alpaca/train_conversation \
--output_lora_path output_models/finetuned_galactica_lora
Tip
उदाहरण: Llama-2-7B के लिए बातचीत डेटा सेट टेम्पलेट निर्दिष्ट करें
cd data && ./download.sh alpaca && cd -
./scripts/run_finetune_with_lora.sh \
--model_name_or_path meta-llama/Llama-2-7b-hf \
--dataset_path data/alpaca/train_conversation \
--conversation_template llama2 \
--output_model_path output_models/finetuned_llama2_7b_lora \
LoRA वज़न को मिलाना
निम्नलिखित आदेश का उपयोग करके LoRA वज़न और मूल मॉडल को मिलाया जा सकता है:
./scripts/run_merge_lora.sh \
--model_name_or_path Qwen/Qwen1.5-1.8B \
--lora_model_path output_models/lora \
--output_model_path output_models/lora_merged \
Inference
एक बार फ़ाइन-ट्यूनिंग समाप्त हो जाने पर, आप निम्न आदेशों का उपयोग करके मॉडल के साथ इंटरैक्ट कर सकते हैं।
./scripts/run_chatbot.sh output_models/finetuned_gpt2
Deployment
यदि आप अपने मॉडल को स्थानीय रूप से डिप्लॉय करना चाहते हैं, तो हम ग्राडियो पर आधारित चैट रोबोट UI प्रदान करते हैं। निम्नलिखित कमांड robin-7b के डेमो को शुरू कर सकते हैं, कृपया संदर्भ के लिए:
pip install gradio
python ./examples/chatbot_gradio.py --deepspeed configs/ds_config_chatbot.json --model_name_or_path YOUR-LLAMA --lora_model_path ./robin-7b --prompt_structure "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.###Human: {input_text}###Assistant:" --end_string "#" --max_new_tokens 200
Evaluation
मुद्रित (छापे) LMFlow Benchmark एक स्वत: एकांत मूल्यांकन के लिए एक फ्रेमवर्क है जो ओपन सोर्स एलएलएम के लिए बनाया गया है। हम विभिन्न पहलुओं का मूल्यांकन करने के लिए नेगेटिव लॉग लाइकलीहुड (एनएलएल) का उपयोग करते हैं, जैसे: चिटचट, सामान्य बुद्धिमत्ता और निर्देशों का पालन। आप अपने पास के मॉडल को मूल्यांकन करने के लिए LMFlow Benchmark का उपयोग करने का स्वागत करते हैं, और हमारे मॉडल तुलना (LLM comparision) में शामिल होने के लिए।
GPT-2 XL को उदाहरण के रूप में, निम्नलिखित आदेश का पालन करके मूल्यांकन शुरू करें:
./scripts/run_benchmark.sh --model_name_or_path gpt2-xl
--model_name_or_path एक आवश्यक पैरामीटर है, जिसे हगिंगफेस मॉडल नाम या मॉडल का स्थानीय पथ पास किया जा सकता है। मूल्यांकन परिणामों को देखने के लिए ./output_dir/gpt2-xl_lmflow_chat_nll_eval, ./output_dir/gpt2-xl_all_nll_eval, और ./output_dir/gpt2-xl_commonsense_qa_eval के अंतर्गत benchmark.log पर जा सकता है।
Supported Features
तेज़ प्रदर्शन और मेमोरी अनुकूलन के लिए फ़ाइन-ट्यूनिंग
-
LISA: Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning
LISA एक मेमोरी अनुकूल LLM माइक्रो-ट्यूनिंग एल्गोरिदम है। माइक्रो-ट्यूनिंग प्रक्रिया में लेयर को विशेष रूप से फ्रीज़ करके, LISA मौजूदा माइक्रो-ट्यूनिंग विधियों (जैसे LoRA) से आगे निकलता है। अधिक जानकारी के लिए पेपर पर जाएं। LISA का उपयोग करने के लिए प्रशिक्षण कमांड में पैरामीटर
--use_lisa 1निर्दिष्ट किया जा सकता है। सक्रिय किए गए परतों की संख्या को--lisa_activated_layers 2द्वारा नियंत्रित किया जा सकता है, और फ्रीज़ की गई परतों के अंतराल को--lisa_step_interval 20द्वारा समायोजित किया जा सकता है। -
LoRA
LoRA पैरामीटर-अनुकूल (parameter-efficient) माइक्रो-ट्यूनिंग एल्गोरिदम है, जो पूरे पैरामीटर माइक्रो-ट्यूनिंग से अधिक कुशल है। कृपया देखें: माइक्रो-ट्यूनिंग (LoRA)।
-
FlashAttention
LMFlow में FlashAttention-1 और नवीनतम FlashAttention-2 दोनों का समर्थन है। अधिक जानकारी के लिए flash_attention देखें।
-
Gradient Checkpointing
ग्रेडिएंट चेकपॉइंटिंग एक मेमोरी अनुकूलन तकनीक है जो कंप्यूट को मेमोरी के लिए विनिमय करती है। यह उपयोगी होता है जब मॉडल GPU मेमोरी में फिट करने के लिए बहुत बड़ा हो। इसे आप अपने प्रशिक्षण कमांड में
--gradient_checkpointingजोड़कर उपयोग करें। -
Deepspeed Zero3
LMFlow Deepspeed Zero-3 Offload का समर्थन करता है। हम एक उदाहरण deepspeed कॉन्फ़िग प्रदान करते हैं, और आप इसे सीधे उपयोग कर सकते हैं।
अनुमान त्वरण
-
LLaMA Inference on CPU
llama.cpp के महान प्रयासों के धन्यवाद। यह सभी के लिए संभव है कि उनके LLaMA मॉडलों को CPU पर 4-बिट क्वांटाइजेशन के साथ चलाया जाए। हम LLaMA LoRA वेट्स को
.ptफ़ाइलों में रूपांतरित करने के लिए एक स्क्रिप्ट प्रदान करते हैं। आपको केवल llama.cpp मेंconvert-pth-to-ggml.pyका उपयोग करना होगा ताकि क्वांटाइजेशन किया जा सके। -
FlashAttention
LMFlow दोनों FlashAttention-1 और नवीनतम FlashAttention-2 का समर्थन करता है। अधिक विवरण के लिए flash_attention देखें।
लंबा संदर्भ
-
LLaMA मॉडल के लिए स्थिति अंतर्पोलेशन
अब एलएमफ्लो LMFlow नवीनतम लीनियर और NTK (न्यूरल कर्नेल सिद्धांत) स्केलिंग तकनीकों का समर्थन करता है। अधिक विवरण के लिए पोज़िशन इंटरपोलेशन देखें।
मॉडल कस्टमाइज़ेशन
-
शब्दावली विस्तार
अब आप अपने खुद के सेंटेंसपीस टोकनाइज़र को प्रशिक्षित कर सकते हैं और इसे मॉडल के मूल hf टोकनाइज़र के साथ मर्ज कर सकते हैं। अधिक विवरण के लिए vocab_extension देखें।
बहुविध
-
Multimodal Chatbot
एलएमफ्लो में चित्रों और पाठों के बहुसाधारण इनपुट का समर्थन है। हमारे एलएमफ्लो बहुसाधारण चैटबॉट की जाँच करें।
Support
यदि आपको किसी भी मदद की आवश्यकता हो तो, कृपया एक Github इशु प्रस्तुत करें।
License
इस परियोजना में शामिल कोड Apache 2.0 लाइसेंस के तहत लाइसेंस प्राप्त है। इस परियोजना में शामिल कोड और मॉडल का व्यापारिक उद्देश्यों के लिए उपयोग करने की इच्छा हो तो, कृपया योगदानकर्ताओं से संपर्क करें।
Citation
यदि आपको यह रेपो उपयोगी लगता है, तो कृपया ⭐ देने और उद्धरण करने का विचार करें:
@article{diao2023lmflow,
title={Lmflow: An extensible toolkit for finetuning and inference of large foundation models},
author={Diao, Shizhe and Pan, Rui and Dong, Hanze and Shum, Ka Shun and Zhang, Jipeng and Xiong, Wei and Zhang, Tong},
journal={arXiv preprint arXiv:2306.12420},
year={2023}
}
@article{dong2023raft,
title={Raft: Reward ranked finetuning for generative foundation model alignment},
author={Dong, Hanze and Xiong, Wei and Goyal, Deepanshu and Pan, Rui and Diao, Shizhe and Zhang, Jipeng and Shum, Kashun and Zhang, Tong},
journal={arXiv preprint arXiv:2304.06767},
year={2023}
}
@article{pan2024lisa,
title={LISA: Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning},
author={Pan, Rui and Liu, Xiang and Diao, Shizhe and Pi, Renjie and Zhang, Jipeng and Han, Chi and Zhang, Tong},
journal={arXiv preprint arXiv:2403.17919},
year={2024}
}