راهنمای استنتاج LLM

LLM Inference API به شما امکان می‌دهد مدل‌های زبان بزرگ (LLM) را کاملاً روی دستگاه اجرا کنید، که می‌توانید از آنها برای انجام طیف گسترده‌ای از وظایف، مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصه‌سازی اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه می‌کند، بنابراین می‌توانید آخرین مدل‌های هوش مصنوعی تولیدی روی دستگاه را در برنامه‌ها و محصولات خود اعمال کنید.

آن را امتحان کنید!

این وظیفه از انواع زیر Gemma پشتیبانی می کند: Gemma-2 2B، Gemma 2B و Gemma 7B. جما خانواده ای از مدل های باز سبک وزن و پیشرفته است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدل های جمینی ساخته شده است. همچنین از مدل های خارجی زیر پشتیبانی می کند: Phi-2 ، Falcon-RW-1B و StableLM-3B .

علاوه بر مدل‌های پشتیبانی‌شده، می‌توانید از AI Edge Torch Google برای صادرات مدل‌های PyTorch به مدل‌های LiteRT ( tflite ) با امضای چندگانه استفاده کنید، که با پارامترهای نشانه‌ساز همراه شده‌اند تا Task Bundle را ایجاد کنید که با API استنتاج LLM سازگار است. مدل‌هایی که با AI Edge Torch تبدیل شده‌اند، فقط می‌توانند روی باطن CPU اجرا شوند و بنابراین محدود به اندروید و iOS هستند.

شروع کنید

استفاده از این کار را با دنبال کردن یکی از این راهنماهای پیاده سازی برای پلتفرم هدف خود شروع کنید. این راهنماهای مخصوص پلتفرم شما را از طریق اجرای اساسی این کار با نمونه‌های کدی که از یک مدل موجود و گزینه‌های پیکربندی توصیه‌شده استفاده می‌کنند، راهنمایی می‌کنند:

جزئیات کار

این بخش قابلیت ها، ورودی ها، خروجی ها و گزینه های پیکربندی این کار را شرح می دهد.

ویژگی ها

LLM Inference API دارای ویژگی های کلیدی زیر است:

  1. تولید متن به متن - متن را بر اساس یک اعلان متن ورودی ایجاد کنید.
  2. انتخاب LLM - چندین مدل را برای تنظیم برنامه برای موارد استفاده خاص خود اعمال کنید. همچنین می‌توانید وزنه‌های سفارشی‌شده را به مدل آموزش دهید و اعمال کنید.
  3. پشتیبانی LoRA - قابلیت LLM را با مدل LoRA گسترش دهید و سفارشی کنید، یا با آموزش روی تمام مجموعه داده‌های خود، یا استفاده از مدل‌های LoRA از پیش ساخته شده از جامعه منبع باز (با مدل‌های تبدیل شده با AI Edge Torch Generative API سازگار نیست).
ورودی های وظیفه خروجی های وظیفه
LLM Inference API ورودی های زیر را می پذیرد:
  • درخواست متنی (مثلاً یک سؤال، موضوع ایمیل، سندی که باید خلاصه شود)
API استنتاج LLM نتایج زیر را به دست می دهد:
  • متن تولید شده بر اساس درخواست ورودی (به عنوان مثال، پاسخ به سوال، پیش نویس ایمیل، خلاصه ای از سند)

گزینه های پیکربندی

این کار دارای گزینه های پیکربندی زیر است:

نام گزینه توضیحات محدوده ارزش مقدار پیش فرض
modelPath مسیری که مدل در دایرکتوری پروژه ذخیره می شود. PATH N/A
maxTokens حداکثر تعداد نشانه‌ها (توکن‌های ورودی + نشانه‌های خروجی) که مدل کنترل می‌کند. عدد صحیح 512
topK تعداد نشانه هایی که مدل در هر مرحله از تولید در نظر می گیرد. پیش‌بینی‌ها را به k توکن‌های محتمل‌تر محدود می‌کند. عدد صحیح 40
temperature مقدار تصادفی معرفی شده در طول تولید. دمای بالاتر منجر به خلاقیت بیشتر در متن تولید شده می شود، در حالی که دمای پایین تر تولید قابل پیش بینی بیشتری را تولید می کند. شناور 0.8
randomSeed دانه تصادفی مورد استفاده در تولید متن. عدد صحیح 0
loraPath مسیر مطلق به مدل LoRA به صورت محلی در دستگاه. توجه: این فقط با مدل های GPU سازگار است. PATH N/A
resultListener شنونده نتیجه را طوری تنظیم می کند که نتایج را به صورت ناهمزمان دریافت کند. فقط هنگام استفاده از روش تولید غیر همگام قابل استفاده است. N/A N/A
errorListener یک شنونده خطای اختیاری را تنظیم می کند. N/A N/A

مدل ها

LLM Inference API از بسیاری از مدل‌های زبان بزرگ تبدیل متن به متن پشتیبانی می‌کند، از جمله پشتیبانی داخلی برای چندین مدل که برای اجرا در مرورگرها و دستگاه‌های تلفن همراه بهینه شده‌اند. این مدل های سبک وزن را می توان برای اجرای استنباط ها به طور کامل روی دستگاه استفاده کرد.

قبل از مقداردهی اولیه API استنتاج LLM، یک مدل را دانلود کرده و فایل را در دایرکتوری پروژه خود ذخیره کنید. می توانید از یک مدل از پیش تبدیل شده استفاده کنید یا یک مدل را به فرمت سازگار با MediaPipe تبدیل کنید.

LLM Inference API با دو دسته از مدل‌ها سازگار است که برخی از آنها نیاز به تبدیل مدل دارند. از جدول برای شناسایی روش مراحل مورد نیاز برای مدل خود استفاده کنید.

مدل ها روش تبدیل پلتفرم های سازگار نوع فایل
مدل های پشتیبانی شده Gemma 2B، Gemma 7B، Gemma-2 2B، Phi-2، StableLM، Falcon MediaPipe اندروید، iOS، وب .bin
سایر مدل های PyTorch همه مدل های PyTorch LLM کتابخانه AI Edge Torch Generative اندروید، iOS وظیفه

ما فایل‌های .bin تبدیل شده را برای Gemma 2B، Gemma 7B، و Gemma-2 2B در Kaggle میزبانی می‌کنیم. این مدل‌ها را می‌توان مستقیماً با استفاده از API استنتاج LLM ما مستقر کرد. برای آشنایی با نحوه تبدیل مدل های دیگر، به بخش تبدیل مدل مراجعه کنید.

Gemma-2 2B

Gemma-2 2B جدیدترین مدل از خانواده مدل‌های باز سبک وزن و پیشرفته Gemma است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدل‌های Gemini ساخته شده است. مدل شامل 2B پارامتر و وزن باز است. Gemma-2 2B به دلیل مهارت های استدلالی پیشرفته برای مدل های هم رده خود شناخته شده است.

Gemma-2 2B را دانلود کنید

مدل های Gemma-2 2B در انواع زیر موجود هستند:

همچنین می‌توانید مدل را تنظیم کنید و وزن‌های جدیدی را قبل از اضافه کردن آن به برنامه اضافه کنید. برای اطلاعات بیشتر در مورد تنظیم و سفارشی کردن Gemma، به تنظیم Gemma مراجعه کنید. پس از دانلود Gemma-2 2B از Kaggle Models ، مدل از قبل در قالب مناسب برای استفاده با MediaPipe Tasks است.

جما 2B

Gemma 2B بخشی از خانواده مدل های باز سبک وزن و پیشرفته است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدل های Gemini ساخته شده است. مدل شامل 2B پارامتر و وزن باز است. این مدل برای انواع وظایف تولید متن، از جمله پاسخ به سؤال، خلاصه‌سازی و استدلال مناسب است.

Gemma 2B را دانلود کنید

مدل های Gemma 2B در انواع زیر موجود هستند:

همچنین می‌توانید مدل را تنظیم کنید و وزن‌های جدیدی را قبل از اضافه کردن آن به برنامه اضافه کنید. برای اطلاعات بیشتر در مورد تنظیم و سفارشی کردن Gemma، به تنظیم Gemma مراجعه کنید. پس از دانلود Gemma 2B از Kaggle Models ، مدل از قبل در قالب مناسب برای استفاده با MediaPipe Tasks است.

جما 7B

Gemma 7B یک مدل جما بزرگتر با پارامترهای 7B و وزن باز است. این مدل برای انواع وظایف تولید متن، از جمله پاسخ به سؤال، خلاصه‌سازی و استدلال قدرتمندتر است. Gemma 7B فقط در وب پشتیبانی می شود.

Gemma 7B را دانلود کنید

مدل Gemma 7B در یک نوع عرضه می شود:

پس از دانلود Gemma 7B از Kaggle Models ، مدل از قبل در قالب مناسب برای استفاده با MediaPipe است.

فالکون 1 بی

Falcon-1B یک مدل 1 میلیارد پارامتری فقط رمزگشای علی است که بر روی 350B توکن RefinedWeb آموزش داده شده است.

Falcon 1B را دانلود کنید

API LLM Inference به فایل‌های زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:

  • tokenizer.json
  • tokenizer_config.json
  • pytorch_model.bin

پس از دانلود فایل های مدل فالکون، مدل آماده تبدیل به فرمت MediaPipe با اسکریپت تبدیل می باشد. مراحل موجود در بخش Conversion script for supported models را دنبال کنید.

StableLM 3B

StableLM-3B یک مدل زبان فقط رمزگشای 3 میلیارد پارامتری است که بر روی 1 تریلیون توکن از مجموعه داده‌های انگلیسی متنوع و کد برای 4 دوره از قبل آموزش داده شده است.

StableLM 3B را دانلود کنید

API LLM Inference به فایل‌های زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:

  • tokenizer.json
  • tokenizer_config.json
  • model.safetensors

پس از دانلود فایل های مدل StableLM، مدل آماده تبدیل به فرمت MediaPipe با اسکریپت تبدیل است. مراحل موجود در بخش Conversion script for supported models را دنبال کنید.

فی-2

Phi-2 یک مدل ترانسفورماتور 2.7 میلیارد پارامتری است. با استفاده از متون مصنوعی مختلف NLP و وب سایت های فیلتر شده آموزش داده شد. این مدل برای درخواست هایی که از فرمت پرسش-پاسخ، چت و کد استفاده می کنند، مناسب تر است.

Phi-2 را دانلود کنید

API LLM Inference به فایل‌های زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:

  • tokenizer.json
  • tokenizer_config.json
  • model-00001-of-00002.safetensors
  • model-00002-of-00002.safetensors

پس از دانلود فایل های مدل Phi-2، مدل آماده تبدیل به فرمت MediaPipe با اسکریپت تبدیل می باشد. مراحل موجود در بخش Conversion script for supported models را دنبال کنید.

مدل های مولد PyTorch

مدل‌های مولد PyTorch را می‌توان با AI Edge Torch Generative API به فرمت سازگار با MediaPipe تبدیل کرد. می توانید از API برای تبدیل مدل های PyTorch به مدل های LiteRT (TensorFlow Lite) با امضای چندگانه استفاده کنید. برای جزئیات بیشتر در مورد نقشه برداری و صادرات مدل ها، از صفحه AI Edge Torch GitHub دیدن کنید.

اگر قصد دارید از AI Edge Torch Generative API برای تبدیل مدل PyTorch استفاده کنید، مراحل موجود در مبدل Torch Generative for PyTorch models را دنبال کنید.

تبدیل مدل

MediaPipe LLM Inference API به شما این امکان را می دهد که انواع مدل های زبان بزرگ را روی دستگاه اجرا کنید. این شامل مدل‌هایی می‌شود که از قبل به فرمت سازگار با MediaPipe تبدیل شده‌اند، و همچنین مدل‌های دیگری که می‌توانند با یک اسکریپت تبدیل یا کتابخانه AI Edge Torch تبدیل شوند.

LLM Inference API مدل هایی را در قالب های فایل .bin و .task می پذیرد. مدل‌های از پیش تبدیل شده و مدل‌های تبدیل‌شده با اسکریپت تبدیل، فایل‌های .bin خواهند بود، در حالی که مدل‌هایی که با کتابخانه AI Edge Torch تبدیل می‌شوند، فایل‌های .task خواهند بود. فرمت فایل های مدل های تبدیل شده خود را به صورت دستی تغییر ندهید.

API استنتاج LLM شامل سه مسیر تبدیل مدل است:

مدل های از پیش تبدیل شده

مدل های Gemma-2 2B، Gemma 2B و Gemma 7B به عنوان مدل های از پیش تبدیل شده در قالب MediaPipe در دسترس هستند. این مدل‌ها به هیچ مرحله تبدیل اضافی از کاربر نیاز ندارند و می‌توانند همانطور که هست با LLM Inference API اجرا شوند.

می توانید Gemma-2 2B را از Kaggle Models دانلود کنید:

می توانید انواع Gemma 2B را از Kaggle Models دانلود کنید:

می توانید Gemma 7B را از Kaggle Models دانلود کنید:

برای اطلاعات بیشتر در مورد مدل‌های Gemma، به مستندات مربوط به Gemma-2 2B ، Gemma 2B و Gemma 7B مراجعه کنید.

اسکریپت تبدیل برای مدل های پشتیبانی شده

بسته MediaPipe یک اسکریپت تبدیل برای تبدیل مدل‌های خارجی زیر به فرمت سازگار با MediaPipe ارائه می‌دهد:

برای اطلاعات بیشتر در مورد مدل‌های خارجی پشتیبانی‌شده، به مستندات Falcon 1B ، StableLM 3B و Phi-2 مراجعه کنید.

فرآیند تبدیل مدل به بسته MediaPipe PyPI نیاز دارد. اسکریپت تبدیل در تمام بسته های MediaPipe بعد از 0.10.11 در دسترس است.

وابستگی ها را با موارد زیر نصب و وارد کنید:

$ python3 -m pip install mediapipe

برای تبدیل مدل از کتابخانه genai.converter استفاده کنید:

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  input_ckpt=INPUT_CKPT,
  ckpt_format=CKPT_FORMAT,
  model_type=MODEL_TYPE,
  backend=BACKEND,
  output_dir=OUTPUT_DIR,
  combine_file_only=False,
  vocab_model_file=VOCAB_MODEL_FILE,
  output_tflite_file=OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

برای تبدیل مدل LoRA، ConversionConfig باید گزینه های مدل پایه و همچنین گزینه های LoRA اضافی را مشخص کند. توجه داشته باشید که از آنجایی که API فقط از استنتاج LoRA با GPU پشتیبانی می کند، backend باید روی 'gpu' تنظیم شود.

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

مبدل دو فایل فلت بافر TFLite را خروجی می دهد، یکی برای مدل پایه و دیگری برای مدل LoRA.

پارامتر توضیحات ارزش های پذیرفته شده
input_ckpt مسیر فایل model.safetensors یا pytorch.bin . توجه داشته باشید که گاهی اوقات قالب مدل safetensors به ​​چندین فایل تقسیم می شود، به عنوان مثال model-00001-of-00003.safetensors ، model-00001-of-00003.safetensors . می توانید یک الگوی فایل مانند model*.safetensors را مشخص کنید. PATH
ckpt_format فرمت فایل مدل {"Safetensors"، "pytorch"}
model_type LLM در حال تبدیل است. {"PHI_2"، "FALCON_RW_1B"، "STABLELM_4E1T_3B"، "GEMMA_2B"}
backend پردازنده (Delegate) مورد استفاده برای اجرای مدل. {"cpu"، "gpu"}
output_dir مسیر دایرکتوری خروجی که میزبان فایل های وزن هر لایه است. PATH
output_tflite_file مسیر فایل خروجی به عنوان مثال، "model_cpu.bin" یا "model_gpu.bin". این فایل فقط با LLM Inference API سازگار است و نمی‌تواند به عنوان یک فایل «tflite» عمومی استفاده شود. PATH
vocab_model_file مسیر دایرکتوری که فایل‌های tokenizer.json و tokenizer_config.json را ذخیره می‌کند. برای Gemma، به فایل single tokenizer.model اشاره کنید. PATH
lora_ckpt مسیر فایل LoRA ckpt of safetensors که وزن آداپتور LoRA را ذخیره می کند. PATH
lora_rank یک عدد صحیح نشان دهنده رتبه LoRA ckpt. برای تبدیل وزنه های لور مورد نیاز است. اگر ارائه نشده باشد، مبدل فرض می کند که وزن LoRA وجود ندارد. توجه: فقط باطن GPU از LoRA پشتیبانی می کند. عدد صحیح
lora_output_tflite_file خروجی نام فایل tflite برای وزن های LoRA. PATH

مبدل مولد تورچ برای مدل های PyTorch

مدل‌های مولد PyTorch را می‌توان با AI Edge Torch Generative API به فرمت سازگار با MediaPipe تبدیل کرد. می‌توانید از API برای نوشتن، تبدیل و کمی کردن PyTorch LLM برای استفاده با LLM Inference API استفاده کنید. مبدل Torch Generative فقط برای CPU تبدیل می شود و به یک ماشین لینوکس با حداقل 64 گیگابایت رم نیاز دارد.

تبدیل یک مدل PyTorch با AI Edge Torch Generative API شامل موارد زیر است:

  1. چک پوینت های مدل PyTorch را دانلود کنید
  2. از AI Edge Torch Generative API برای نگارش، تبدیل و کمی کردن مدل به فرمت فایل سازگار با MediaPipe ( .tflite ) استفاده کنید.
  3. یک Task Bundle ( .task ) از فایل tflite و توکنایزر مدل ایجاد کنید.

برای ایجاد یک Task Bundle، از اسکریپت bundling برای ایجاد یک Task Bundle استفاده کنید. فرآیند بسته‌بندی، مدل نگاشت‌شده را با ابرداده‌های اضافی (مثلاً پارامترهای Tokenizer) مورد نیاز برای اجرای استنتاج سرتاسر بسته بندی می‌کند.

فرآیند بسته‌بندی مدل به بسته MediaPipe PyPI نیاز دارد. اسکریپت تبدیل در تمام بسته های MediaPipe بعد از 0.10.14 در دسترس است.

وابستگی ها را با موارد زیر نصب و وارد کنید:

$ python3 -m pip install mediapipe

از کتابخانه genai.bundler برای بسته بندی مدل استفاده کنید:

import mediapipe as mp
from mediapipe.tasks.python.genai import bundler

config = bundler.BundleConfig(
    tflite_model=TFLITE_MODEL,
    tokenizer_model=TOKENIZER_MODEL,
    start_token=START_TOKEN,
    stop_tokens=STOP_TOKENS,
    output_filename=OUTPUT_FILENAME,
    enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
پارامتر توضیحات ارزش های پذیرفته شده
tflite_model مسیر به مدل TFLite صادر شده توسط AI Edge. PATH
tokenizer_model مسیر رسیدن به مدل توکنایزر SentencePiece. PATH
start_token نشانه شروع خاص مدل توکن شروع باید در مدل توکنایزر ارائه شده وجود داشته باشد. STRING
stop_tokens نشانه های توقف خاص را مدل کنید. توکن های توقف باید در مدل توکنایزر ارائه شده وجود داشته باشد. LIST[STRING]
output_filename نام فایل بسته کار خروجی. PATH

سفارشی سازی LoRA

Mediapipe LLM inference API را می توان برای پشتیبانی از سازگاری با رتبه پایین (LoRA) برای مدل های زبان بزرگ پیکربندی کرد. توسعه دهندگان با استفاده از مدل های LoRA دقیق تنظیم شده می توانند رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی کنند.

پشتیبانی LoRA از LLM Inference API برای همه انواع Gemma و مدل‌های Phi-2 برای باطن GPU کار می‌کند، با وزن‌های LoRA فقط برای لایه‌های توجه قابل اعمال است. این پیاده‌سازی اولیه به‌عنوان یک API آزمایشی برای پیشرفت‌های آینده با برنامه‌هایی برای پشتیبانی از مدل‌های بیشتر و انواع لایه‌های مختلف در به‌روزرسانی‌های آتی عمل می‌کند.

مدل های LoRA را آماده کنید

دستورالعمل‌های HuggingFace را دنبال کنید تا یک مدل LoRA تنظیم‌شده را روی مجموعه داده‌های خود با انواع مدل‌های پشتیبانی‌شده، Gemma یا Phi-2 آموزش دهید. مدل‌های Gemma-2 2B ، Gemma 2B و Phi-2 هر دو در HuggingFace در قالب محافظ‌های ایمنی موجود هستند. از آنجایی که LLM Inference API فقط از LoRA در لایه های توجه پشتیبانی می کند، در حین ایجاد LoraConfig فقط لایه های توجه را به صورت زیر مشخص کنید:

# For Gemma
from peft import LoraConfig
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

# For Phi-2
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)

برای آزمایش، مدل‌های LoRA با تنظیم دقیق در دسترس عموم و متناسب با LLM Inference API موجود در HuggingFace وجود دارد. به عنوان مثال، monsterapi/gemma-2b-lora-maths-orca-200k برای Gemma-2B و lole25/phi-2-sft-ultrachat-lora برای Phi-2.

پس از آموزش بر روی مجموعه داده آماده شده و ذخیره مدل، یک فایل adapter_model.safetensors حاوی وزن های مدل LoRA تنظیم شده به دست می آورید. فایل Safetensors نقطه بازرسی LoRA است که در تبدیل مدل استفاده می شود.

به عنوان گام بعدی، باید وزن های مدل را با استفاده از بسته MediaPipe Python به یک Flatbuffer Flatbuffer TensorFlow Lite تبدیل کنید. ConversionConfig باید گزینه های مدل پایه و همچنین گزینه های LoRA اضافی را مشخص کند. توجه داشته باشید که از آنجایی که API فقط از استنتاج LoRA با GPU پشتیبانی می کند، backend باید روی 'gpu' تنظیم شود.

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

مبدل دو فایل فلت بافر TFLite را خروجی می دهد، یکی برای مدل پایه و دیگری برای مدل LoRA.

استنتاج مدل LoRA

Web، Android و iOS LLM Inference API برای پشتیبانی از استنتاج مدل LoRA به روز شده است.

Android از LoRA ایستا در هنگام شروع اولیه پشتیبانی می کند. برای بارگذاری یک مدل LoRA، کاربران مسیر مدل LoRA و همچنین LLM پایه را مشخص می کنند.

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPath('<path to base model>')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .setLoraPath('<path to LoRA model>')
        .build()

// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)

برای اجرای استنتاج LLM با LoRA، از همان متدهای generateResponse() یا generateResponseAsync() به عنوان مدل پایه استفاده کنید.