MPT-7B, व्यावसायिक रूप से उपयोग करने योग्य भाषा मॉडल का समय आ गया है

May 10 2023
ओपन-सोर्स एलएलएम के लिए एक परिचय और विकास गाइड - एमपीटी-7बी समग्र मोज़ेक एक स्टार्टअप कंपनी है जो एआई मॉडल में विशेषज्ञता रखती है, और इस लेख में, हम उनकी नई जारी की गई एमपीटी-7बी मॉडल श्रृंखला पेश करेंगे। वे पूरी तरह से ओपन-सोर्स और व्यावसायिक रूप से उपलब्ध मॉडल हैं, जिन्हें 9 में प्रशिक्षित किया गया है।

ओपन-सोर्स एलएलएम - एमपीटी-7बी के लिए एक परिचय और विकास गाइड

मिडजर्नी द्वारा उत्पन्न छवि

कुल मिलाकर

मोज़ेक एक स्टार्टअप कंपनी है जो एआई मॉडल में विशेषज्ञता रखती है, और इस लेख में, हम उनकी नई रिलीज़ की गई एमपीटी-7बी मॉडल श्रृंखला पेश करेंगे। वे पूरी तरह से ओपन-सोर्स और व्यावसायिक रूप से उपलब्ध मॉडल हैं, जिन्हें 9.5 दिनों में 1 ट्रिलियन टोकन पर स्क्रैच से प्रशिक्षित किया गया है, जिनकी विकास प्रक्रिया उन मॉडलों की तुलना में बहुत अधिक जटिल और महंगी है, जिन्हें मैंने अपने पिछले लेखों में पेश किया था। स्टार्टअप के लिए यह एक उल्लेखनीय उपलब्धि है, विशेष रूप से यह देखते हुए कि उन्होंने 200K यूएसडी हार्डवेयर लागत पर ट्रिलियन टोकन तक प्रशिक्षित किया है। बेस मॉडल की क्षमता 7-बिलियन LLaMA मॉडल के बराबर है, इसके अलावा, उन्होंने विकासशील समुदायों को प्रेरित करने के लिए अन्य मॉडलों को भी फाइन-ट्यून किया है, जिसमें इंस्ट्रक्शन मॉडल, चैट मॉडल और स्टोरीराइटर मॉडल शामिल हैं।

MPT-7B मॉडल मोज़ेक के मूल्यांकन परीक्षणों में LLaMA-7B मॉडल के समकक्ष प्रदर्शन वाला पहला ओपन-सोर्स भाषा मॉडल है, और यह पायथिया और StableLM और अब तक के कई अन्य ओपन-सोर्स मॉडल की तुलना में उच्च गुणवत्ता और अधिक स्थिर दिखता है। परिणाम और प्रशिक्षण तराजू। अन्य मॉडल, जैसे कि RedPajama और OpenLLaMA, वर्तमान प्रशिक्षण मॉडल के केवल स्नैपशॉट हैं जो अभी तक पूरी तरह से जारी नहीं किए गए हैं। यह पहला मॉडल है जिसे हमने वास्तव में प्राप्त किया है जहां यह पूर्ण मॉडल है और यह दिखाने के लिए बेंचमार्क किया गया है कि यह मूल रूप से LLaMA के बराबर है। MPT-7B मॉडल व्यावसायिक रूप से उपलब्ध पहला मॉडल भी है, और हम व्यावसायिक उपयोग के लिए इसे अपने डेटा पर स्वयं ठीक कर सकते हैं।

शैक्षणिक कार्यों पर MPT-7B बनाम LLaMA-7B बनाम अन्य ओपन सोर्स मॉडल की शून्य-शॉट सटीकता (मोज़ेक से)।

स्टोरीराइटर मॉडल की प्रसंग लंबाई

MPT-7B मॉडल के बारे में सबसे अच्छी चीजों में से एक यह है कि इसने स्टोरी-राइटर मॉडल प्रदान किया है MPT-7B-StoryWriter-65k+, जिसे ALiBi आर्किटेक्चर के साथ प्रशिक्षित किया गया था, जिससे उपयोगकर्ता संदर्भ को इतनी अधिक लंबाई तक बढ़ा सकते हैं। अगर आप किसी लंबे मॉडल को फ़ाइन-ट्यून करना चाहते हैं, तो आप आज ऐसा कर सकते हैं। यही उन्होंने स्टोरी-राइटर मॉडल के साथ किया है, जहां उन्होंने बेस मॉडल लिया है और इसे 65,000+ टोकन की संदर्भ लंबाई के साथ ठीक किया है। इसे परिप्रेक्ष्य में रखने के लिए, मूल LLaMA मॉडल केवल 2048 टोकन स्वीकार करता है, StableLM को 4,096 टोकन के लिए प्रशिक्षित किया गया था, और ChatGPT और GPT-4 के लिए, संख्या 4,096 और 8,000-32,000 है, जो इस बात पर निर्भर करता है कि आपके पास किस संस्करण तक पहुंच है।

65+के-टोकन इनपुट की विशेषता एमपीटी को मॉडलों के बीच और अधिक प्रभावशाली बनाती है

इसके ब्लॉग पर एक प्रभावशाली उदाहरण है जो दिखा रहा है कि मोज़ेक टीम ने एक बार द ग्रेट गैट्सबी की पूरी किताब को प्रेरित किया , फिर मॉडल ने 67873 टोकन इनपुट के आधार पर सफलतापूर्वक एक अच्छा उपसंहार तैयार किया। मैंने ऐसा करने में सक्षम किसी अन्य करीबी मॉडल या खुले मॉडल को कभी नहीं देखा है, जिससे मुझे यह विचार करना पड़े कि भविष्य में संदर्भ में सीखने के लिए कौन सी विधि अधिक लागत प्रभावी है, OpenAI या स्टोरी-राइटर मॉडल की एम्बेडिंग। यदि आप इन-कॉन्टेक्स्ट लर्निंग में रुचि रखते हैं, तो कृपया मेरे पिछले लेख को देखें।

प्रशिक्षण के लिए डेटासेट

उन्होंने एक 7 बिलियन इंस्ट्रक्शन मॉडल को भी प्रशिक्षित किया है MPT-7B-Instruct, जो एक शॉर्ट-फॉर्म इंस्ट्रक्शन-फॉलोइंग मॉडल है। यह मुख्य रूप से डाटाब्रिक्स के डॉली-15के डाटासेट के संवर्द्धन से ओपन-सोर्स डेटासेट पर बेस मोड से फाइन-ट्यून किया गया है। नतीजतन, वे एक बड़ा निर्देश-आधारित डेटासेट प्राप्त करते हैं और एक व्यावसायिक-प्रयोग करने योग्य लाइसेंस रखते हैं। जैसा कि मैंने लेख में उल्लेख किया हैडॉली 2.0 पर, डॉली की व्यावसायिक उपयोगिता का प्रमुख प्रवर्तक इसका शुद्ध लाइसेंस-मुक्त डेटासेट है, जो चैटजीपीटी जैसे अन्य एआई मॉडल से उत्पन्न नहीं होता है, बल्कि मनुष्यों द्वारा बनाया जाता है। उसके कारण, जब आप इसके साथ खेलते हैं और इससे प्रश्न पूछते हैं, तो आपको "AI भाषा मॉडल के रूप में, मैं नहीं कर सकता ..." जैसे परिचित उत्तर नहीं मिलते हैं। हालाँकि, यह उतना बड़ा डेटासेट नहीं है जितना कि विकुना मॉडल और कोआला मॉडल उपयोग कर रहे हैं और टीम इस निर्देश मॉडल के अधिक प्रतिस्पर्धी के लिए अपने प्रशिक्षण को 1T डेटासेट तक विस्तारित करने की योजना बना रही है।

JSON रूपांतरण कार्य पर निर्देश मॉडल का एक उदाहरण

अन्य

एमपीटी-7बी का एक अन्य व्यापक मॉडल भी है जिसे MPT-7B-Chat उपयोगकर्ताओं के लिए सहज, आकर्षक मल्टी-टर्न इंटरैक्शन प्रदान करने के लिए कहा जाता है। कृपया ध्यान दें कि यह चैटबॉट मॉडल एकमात्र ऐसा है जिसे व्यावसायिक उपयोग की अनुमति नहीं है।

इसके अलावा, MPT-7B मॉडल की ऑप्टिमाइज़ेशन लेयर में FlashAttention और कम सटीक लेयरनॉर्म शामिल हैं, जो अन्य 7-बिलियन मॉडल की तुलना में हगिंगफेस हब पर " 1.5x-2x तेज " की तुलना में तेज अनुमान गति का हिस्सा हैं।

यहाँ MPT-7B मॉडल के संसाधन दिए गए हैं जिनसे आप सीख सकते हैं:

  • ब्लॉग भेजा:https://www.mosaicml.com/blog/mpt-7b
  • निर्देश डेमो:https://huggingface.co/spaces/mosaicml/mpt-7b-instruct
  • चैट डेमो:https://huggingface.co/spaces/mosaicml/mpt-7b-chat

जबकि एक मॉडल व्यावसायिक उपयोग के लिए इतना उपयुक्त है, आसान और सस्ता परिनियोजन इसकी अन्य महत्वपूर्ण विशेषताओं में से एक होना चाहिए। PreTrainedModelसौभाग्य से, MPT-7B को हगिंगफेस बेस क्लास के साथ सहज अनुकूलता के लिए धन्यवाद, अनुमान कार्यों के लिए तैनात करने के लिए तेज, सरल और सस्ती होने के लिए इंजीनियर किया गया है।

यदि आप MPT-7B-निर्देश मॉडल को स्थानीय रूप से परिनियोजित और चलाना चाहते हैं, तो इसका संदर्भ देने के लिए मैंने आपके लिए एक Google Colab नोटबुक बनाई है: https://colab.research.google.com/drive/16D9tjggLukD38Un0hC-Gss3mrehPXng_?usp=sharing

कृपया इसे अपने स्थान पर कॉपी करने के लिए स्वतंत्र महसूस करें, लेकिन सूचित करें कि इस मॉडल को चलाने के लिए, आपके पास पूर्व-प्रशिक्षित संसाधनों के लिए एक Colab Pro खाता या स्थानीय GPU समर्थन हो सकता है, जिसके लिए न्यूनतम T4 15GB GPU और 22GB RAM की आवश्यकता होती है MPT-7B-Instruct

आइए नोटबुक में कोड के माध्यम से चलते हैं।

ए) संकुल स्थापित करें

!pip install requests torch transformers einops

from typing import Any, Dict, Tuple
import warnings
import datetime
import os
from threading import Event, Thread
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList, TextIteratorStreamer

import textwrap

INSTRUCTION_KEY = "### Instruction:"
RESPONSE_KEY = "### Response:"
END_KEY = "### End"
INTRO_BLURB = "Below is an instruction that describes a task. Write a response that appropriately completes the request."
PROMPT_FOR_GENERATION_FORMAT = """{intro}
{instruction_key}
{instruction}
{response_key}
""".format(
    intro=INTRO_BLURB,
    instruction_key=INSTRUCTION_KEY,
    instruction="{instruction}",
    response_key=RESPONSE_KEY,
)


class InstructionTextGenerationPipeline:
...

INSTRUCTION_KEY, RESPONSE_KEY, और END_KEYसंकेत के विशिष्ट अनुभागों की पहचान करने के लिए कुंजियों के रूप में उपयोग किए जाते हैं। INTRO_BLURBएक स्ट्रिंग है जो प्रांप्ट के लिए कुछ परिचयात्मक पाठ प्रदान करती है। PROMPT_FOR_GENERATION_FORMATएक स्ट्रिंग है जो उस प्रांप्ट के प्रारूप को परिभाषित करती है जो भाषा मॉडल को दिया जाता है।

InstructionTextGenerationPipelineपूर्व-प्रशिक्षित ट्रांसफॉर्मर भाषा मॉडल का उपयोग करते हुए एक निर्देश दिए गए पाठ को उत्पन्न करने के लिए नामित एक वर्ग को परिभाषित किया गया है। कक्षा transformersपूर्व-प्रशिक्षित मॉडल और टोकननाइज़र को लोड करने के लिए पुस्तकालय का उपयोग करती है और एक __call__विधि को परिभाषित करती है जो एक निर्देश स्ट्रिंग को इनपुट के रूप में लेती है और भाषा मॉडल का उपयोग करके एक प्रतिक्रिया स्ट्रिंग उत्पन्न करती है।

डी) पाइपलाइन के साथ लोड मॉडल

generate = InstructionTextGenerationPipeline(
    "mosaicml/mpt-7b-instruct",
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
)
stop_token_ids = generate.tokenizer.convert_tokens_to_ids(["<|endoftext|>"])

# Define a custom stopping criteria
class StopOnTokens(StoppingCriteria):
    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
        for stop_id in stop_token_ids:
            if input_ids[0][-1] == stop_id:
                return True
        return False

def process_stream(instruction, temperature, top_p, top_k, max_new_tokens):
    # Tokenize the input
    input_ids = generate.tokenizer(
        generate.format_instruction(instruction), return_tensors="pt"
    ).input_ids
    input_ids = input_ids.to(generate.model.device)

    # Initialize the streamer and stopping criteria
    streamer = TextIteratorStreamer(
        generate.tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True
    )
    stop = StopOnTokens()

    if temperature < 0.1:
        temperature = 0.0
        do_sample = False
    else:
        do_sample = True

    gkw = {
        **generate.generate_kwargs,
        **{
            "input_ids": input_ids,
            "max_new_tokens": max_new_tokens,
            "temperature": temperature,
            "do_sample": do_sample,
            "top_p": top_p,
            "top_k": top_k,
            "streamer": streamer,
            "stopping_criteria": StoppingCriteriaList([stop]),
        },
    }

    response = ''

    def generate_and_signal_complete():
        generate.model.generate(**gkw)

    t1 = Thread(target=generate_and_signal_complete)
    t1.start()

    for new_text in streamer:
        response += new_text
   
    return response

अब, हम process_stream() विधि को उचित तर्कों के साथ कॉल करने में सक्षम हैं यह देखने के लिए कि मॉडल हमारे निर्देशों का जवाब कैसे देता है।

instruction = "Write a travel blog about a 3-day trip to The Philippines. You need describe day by day."
temperature = 0.3
top_p = 0.95
top_k = 0
max_new_tokens = 2000
response = process_stream(instruction, temperature, top_p, top_k, max_new_tokens)

wrapped_text = textwrap.fill(response, width=100)
print(wrapped_text +'\n\n')

एमपीटी-7बी-निर्देश से प्रतिक्रिया

जब आपकी Colab या स्थानीय मशीन सफलतापूर्वक मॉडल को डिप्लॉय कर लेती है, और आपके दृष्टिकोण के अनुसार अलग-अलग व्यवहार देखने के लिए कोड में पैरामीटर एडजस्ट कर लेती है, तो आप मॉडल के लिए और अधिक निर्देश देने की कोशिश कर सकते हैं। मेरे अब तक के परीक्षणों से, पाठ और कोड पूरा करना काफी अच्छा है लेकिन तर्क और गणित अभी तक किसी व्यावसायिक निर्देश कार्य को चलाने के लिए परिपक्व नहीं हुए हैं। मोज़ेक के आधिकारिक ब्लॉग से, हम जानते हैं कि वे इन परिष्कृत मॉडलों में अधिक प्रशिक्षण डेटा डालने का प्रयास कर रहे हैं।

MPT-7B का बेस मॉडल, फाइन-ट्यूनिंग, डेटासेट, प्रशिक्षण, और अनुमान सभी ओपन-सोर्स और कमर्शियल-फ्री हैं, इसलिए अब आप अपने एआई बिजनेस के लिए एक किफायती कीमत पर प्रशिक्षण और अपने निजी मॉडल को जारी करने पर विचार करना शुरू कर सकते हैं।

इतना ही।

आशा है कि आप इस लेख में कुछ उपयोगी पा सकते हैं और पढ़ने के लिए धन्यवाद!

लेवल अप कोडिंग

हमारे समुदाय का हिस्सा बनने के लिए धन्यवाद! इससे पहले कि तुम जाओ:

  • कहानी के लिए ताली बजाएं और लेखक को फॉलो करें
  • लेवल अप कोडिंग प्रकाशन में अधिक सामग्री देखें
  • फ्री कोडिंग इंटरव्यू कोर्स ⇒ कोर्स देखें
  • हमें फॉलो करें: ट्विटर | लिंक्डइन | समाचार पत्रिका