[-1–>

Siddhant Jagtap's avatar


مع ثورة الذكاء الاصطناعي التوليدي (GenAI) على قدم وساق، أصبح إنشاء النصوص باستخدام نماذج المحولات مفتوحة المصدر مثل Llama 2 حديث المدينة. يتطلع عشاق الذكاء الاصطناعي وكذلك المطورون إلى الاستفادة من القدرات التوليدية لهذه النماذج في حالات الاستخدام والتطبيقات الخاصة بهم. توضح هذه المقالة مدى سهولة إنشاء نص باستخدام مجموعة نماذج Llama 2 (7b و13b و70b) باستخدام Optimum Habana وفئة مسار مخصصة – ستتمكن من تشغيل النماذج ببضعة أسطر فقط من التعليمات البرمجية!

تم تصميم فئة خطوط الأنابيب المخصصة هذه لتوفير قدر كبير من المرونة وسهولة الاستخدام. علاوة على ذلك، فهو يوفر مستوى عالٍ من التجريد ويقوم بإنشاء نص شامل يتضمن المعالجة المسبقة والمعالجة اللاحقة. هناك طرق متعددة لاستخدام خط الأنابيب – يمكنك تشغيل run_pipeline.py البرنامج النصي من مستودع Optimum Habana، أو أضف فئة خط الأنابيب إلى نصوص python النصية الخاصة بك، أو قم بتهيئة فئات LangChain باستخدامها.

المتطلبات الأساسية

نظرًا لأن نماذج Llama 2 جزء من مستودع مسور، فستحتاج إلى طلب الوصول إذا لم تكن قد قمت بذلك بالفعل. أولاً، عليك زيارة موقع Meta الإلكتروني والموافقة على الشروط والأحكام. بعد أن يتم منحك حق الوصول عن طريق Meta (قد يستغرق الأمر يومًا أو يومين)، يتعين عليك طلب الوصول في Hugging Face، باستخدام نفس عنوان البريد الإلكتروني الذي قدمته في نموذج Meta.

بعد منحك حق الوصول، يرجى تسجيل الدخول إلى حساب Hugging Face الخاص بك عن طريق تشغيل الأمر التالي (ستحتاج إلى رمز وصول، والذي يمكنك الحصول عليه من صفحة ملف تعريف المستخدم الخاص بك):

huggingface-cli login

تحتاج أيضًا إلى تثبيت أحدث إصدار من Optimum Habana واستنساخ الريبو للوصول إلى البرنامج النصي لخط الأنابيب. فيما يلي الأوامر للقيام بذلك:

pip install optimum-habana==1.10.4
git clone -b v1.10-release https://github.com/huggingface/optimum-habana.git

في حال كنت تخطط لتشغيل الاستدلال الموزع، قم بتثبيت DeepSpeed ​​اعتمادًا على إصدار SynapseAI لديك. في هذه الحالة، أنا أستخدم SynapseAI 1.14.0.

pip install git+https://github.com/HabanaAI/DeepSpeed.git@1.14.0

أنت الآن جاهز تمامًا لإنشاء النص باستخدام المسار!

استخدام خط الأنابيب

أولا، انتقل إلى الدليل التالي في جهازك optimum-habana قم بالخروج من مكان وجود البرامج النصية لخطوط الأنابيب، واتبع الإرشادات الموجودة في ملف README لتحديث الخاص بك PYTHONPATH.

cd optimum-habana/examples/text-generation
pip install -r requirements.txt
cd text-generation-pipeline

إذا كنت ترغب في إنشاء تسلسل نصي من موجه من اختيارك، فإليك نموذج أمر.

python run_pipeline.py  --model_name_or_path meta-llama/Llama-2-7b-hf --use_hpu_graphs --use_kv_cache --max_new_tokens 100 --do_sample --prompt "Here is my prompt"

يمكنك أيضًا تمرير مطالبات متعددة كمدخل وتغيير درجة الحرارة وقيم top_p للإنشاء على النحو التالي.

python run_pipeline.py --model_name_or_path meta-llama/Llama-2-13b-hf --use_hpu_graphs --use_kv_cache --max_new_tokens 100 --do_sample --temperature 0.5 --top_p 0.95 --prompt "Hello world" "How are you?"

لإنشاء نص باستخدام نماذج كبيرة مثل Llama-2-70b، إليك نموذج أمر لتشغيل المسار باستخدام DeepSpeed.

python ../../gaudi_spawn.py --use_deepspeed --world_size 8 run_pipeline.py --model_name_or_path meta-llama/Llama-2-70b-hf --max_new_tokens 100 --bf16 --use_hpu_graphs --use_kv_cache --do_sample --temperature 0.5 --top_p 0.95 --prompt "Hello world" "How are you?" "Here is my prompt" "Once upon a time"

الاستخدام في البرامج النصية بايثون

يمكنك استخدام فئة خط الأنابيب في البرامج النصية الخاصة بك كما هو موضح في المثال أدناه. قم بتشغيل نموذج البرنامج النصي التالي من optimum-habana/examples/text-generation/text-generation-pipeline.

import argparse
import logging

from pipeline import GaudiTextGenerationPipeline
from run_generation import setup_parser


logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
    datefmt="%m/%d/%Y %H:%M:%S",
    level=logging.INFO,
)
logger = logging.getLogger(__name__)


parser = argparse.ArgumentParser()
args = setup_parser(parser)


args.num_return_sequences = 1
args.model_name_or_path = "meta-llama/Llama-2-7b-hf"
args.max_new_tokens = 100
args.use_hpu_graphs = True
args.use_kv_cache = True
args.do_sample = True


pipe = GaudiTextGenerationPipeline(args, logger)


prompts = ["He is working on", "Once upon a time", "Far far away"]


for prompt in prompts:
    print(f"Prompt: {prompt}")
    output = pipe(prompt)
    print(f"Generated Text: {repr(output)}")

سيتعين عليك تشغيل البرنامج النصي أعلاه باستخدام python <name_of_script>.py --model_name_or_path a_model_name مثل --model_name_or_path هي حجة مطلوبة. ومع ذلك، يمكن تغيير اسم النموذج برمجيًا كما هو موضح في مقتطف بايثون.

يوضح لنا هذا أن فئة خط الأنابيب تعمل على إدخال سلسلة وتقوم بالمعالجة المسبقة للبيانات بالإضافة إلى المعالجة اللاحقة لنا.

توافق لانج تشين

يمكن تغذية خط أنابيب إنشاء النص كمدخل إلى فئات LangChain عبر ملف use_with_langchain حجة المنشئ. يمكنك تثبيت LangChain على النحو التالي.

pip install langchain==0.0.191

إليك نموذج نصي يوضح كيفية استخدام فئة خط الأنابيب مع LangChain.

import argparse
import logging

from langchain.llms import HuggingFacePipeline
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

from pipeline import GaudiTextGenerationPipeline
from run_generation import setup_parser


logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
    datefmt="%m/%d/%Y %H:%M:%S",
    level=logging.INFO,
)
logger = logging.getLogger(__name__)


parser = argparse.ArgumentParser()
args = setup_parser(parser)


args.num_return_sequences = 1
args.model_name_or_path = "meta-llama/Llama-2-13b-chat-hf"
args.max_input_tokens = 2048
args.max_new_tokens = 1000
args.use_hpu_graphs = True
args.use_kv_cache = True
args.do_sample = True
args.temperature = 0.2
args.top_p = 0.95


pipe = GaudiTextGenerationPipeline(args, logger, use_with_langchain=True)


llm = HuggingFacePipeline(pipeline=pipe)

template = """Use the following pieces of context to answer the question at the end. If you don't know the answer,\
just say that you don't know, don't try to make up an answer.

Context: Large Language Models (LLMs) are the latest models used in NLP.
Their superior performance over smaller models has made them incredibly
useful for developers building NLP enabled applications. These models
can be accessed via Hugging Face's `transformers` library, via OpenAI
using the `openai` library, and via Cohere using the `cohere` library.

Question: {question}
Answer: """

prompt = PromptTemplate(input_variables=["question"], template=template)
llm_chain = LLMChain(prompt=prompt, llm=llm)


question = "Which libraries and model providers offer LLMs?"
response = llm_chain(prompt.format(question=question))
print(f"Question 1: {question}")
print(f"Response 1: {response['text']}")

question = "What is the provided context about?"
response = llm_chain(prompt.format(question=question))
print(f"\nQuestion 2: {question}")
print(f"Response 2: {response['text']}")

تم التحقق من صحة فئة خط الأنابيب لإصدار LangChain 0.0.191 وقد لا تعمل مع الإصدارات الأخرى من الحزمة.

خاتمة

لقد قدمنا ​​مسارًا مخصصًا لإنشاء النص على مسرع Intel® Gaudi® 2 AI الذي يقبل مطالبات فردية أو متعددة كمدخلات. يوفر خط الأنابيب هذا مرونة كبيرة من حيث حجم النموذج بالإضافة إلى المعلمات التي تؤثر على جودة إنشاء النص. علاوة على ذلك، فهو أيضًا سهل الاستخدام للغاية وتوصيله بالبرامج النصية الخاصة بك، وهو متوافق مع LangChain.

يخضع استخدام النموذج المُدرب مسبقًا للامتثال لتراخيص الطرف الثالث، بما في ذلك “اتفاقية ترخيص مجتمع Llama 2” (LLAMAV2). للحصول على إرشادات حول الاستخدام المقصود لنموذج LLAMA2، وما سيتم اعتباره سوء استخدام واستخدامات خارج النطاق، ومن هم المستخدمون المقصودون والشروط الإضافية، يرجى مراجعة وقراءة التعليمات الواردة في هذا الرابط https://ai.meta.com/llama/license/. يتحمل المستخدمون المسؤولية الوحيدة عن متابعة أي تراخيص تابعة لجهة خارجية والامتثال لها، وتخلي Habana Labs مسؤوليتها ولن تتحمل أي مسؤولية فيما يتعلق باستخدام المستخدمين أو الامتثال لتراخيص الجهة الخارجية. لتتمكن من تشغيل نماذج مسورة مثل Llama-2-70b-hf، تحتاج إلى ما يلي:

  • لديك حساب HuggingFace
  • وافق على شروط استخدام النموذج في بطاقة النموذج الخاصة به على HF Hub
  • تعيين رمز القراءة
  • قم بتسجيل الدخول إلى حسابك باستخدام HF CLI: قم بتشغيل تسجيل الدخول Huggingface-cli قبل تشغيل البرنامج النصي الخاص بك

شاركها.
اترك تعليقاً