برنامه نویسی

LLM خود را در AWS EC2 مستقر کنید

Summarize this content to 400 words in Persian Lang
آیا تا به حال شده است که از به کارگیری مدل زبان بزرگ (LLM) خود هیجان زده شده باشید، اما به دلیل اینکه لپ تاپ شما از عهده وظایفش بر نمی آید، به دیوار برخورد کرده اید؟ من دقیقا می دانم که چه احساسی دارد. LLM ها قدرتمند هستند، اما به قدرت محاسباتی زیادی نیاز دارند – چیزی که اکثر ما در دسترس نداریم.

من خودم به این مشکل برخوردم من می خواستم با استفاده از LLM یک برنامه کاربردی جالب بسازم که دوستانم بتوانند از آن استفاده کنند، اما ایده خرید یک GPU گران قیمت فقط برای کارکرد آن منتفی بود. بنابراین، من شروع به جستجوی راه حل کردم. آن موقع بود که به طور تصادفی با AWS برخورد کردم.

استفاده از AWS یک نجات دهنده بود. من نیازی به سرمایه گذاری روی هیچ سخت افزار فانتزی نداشتم. در عوض، AWS به شما امکان می‌دهد فقط برای آنچه استفاده می‌کنید بپردازید. اکنون، من سه برنامه مختلف LLM در حال اجرا در فضای ابری دارم، و نیازی به خرج کردن پول زیادی برای تجهیزات ندارم.

در این پست، من شما را با نحوه راه‌اندازی LLM خود در فضای ابری گام به گام آشنا می‌کنم و نکاتی را برای صرفه‌جویی در هزینه‌های خود به اشتراک می‌گذارم. اگر من بتوانم آن را انجام دهم، شما هم می توانید!

شروع به کار

برای استقرار در AWS، ما باید بدانیم که LLM چگونه محاسبه می‌کند و کدام نمونه می‌تواند برای ما مناسب باشد.

من از یک برنامه RAG مبتنی بر LLM که با Streamlit ساخته شده است، با استفاده از مدل LLama2-7B از Meta استفاده خواهم کرد.

1. درک منبع درست

از آنجایی که هر مدل زبان بزرگ (LLM) تعداد پارامترهای متفاوتی دارد و ممکن است از دقت عددی متفاوتی استفاده کند، برای استنتاج و تنظیم دقیق به قابلیت‌های GPU متفاوتی نیاز دارند.

یک قانون ساده برای تخمین مقدار حافظه GPU مورد نیاز برای ذخیره پارامترهای مدل در طول استنتاج هر LLM منبع باز به شرح زیر است:

حافظه GPU (بر حسب بایت) = تعداد پارامترهای مدل × بیت در هر پارامتر ÷ 8 (بیت در هر بایت)

به عنوان مثال، برای یک مدل 7 میلیارد پارامتری با استفاده از اعداد ممیز شناور 32 بیتی:

حافظه GPU = 7,000,000,000 پارامتر × 32 بیت در هر پارامتر ÷ 8 بیت در هر بایتحافظه GPU = 28,000,000,000 بایتحافظه GPU = 28 گیگابایت

با این حال، این نیاز می تواند بسیار بالا باشد. برای کاهش ردپای حافظه، می توانیم از تکنیک های کوانتیزاسیون استفاده کنیم. به عنوان مثال، با استفاده از کوانتیزاسیون 4 بیتی:

حافظه GPU = 7,000,000,000 پارامتر × 4 بیت در هر پارامتر ÷ 8 بیت در هر بایتحافظه GPU = 3,500,000,000 بایتحافظه GPU = 3.5 گیگابایت

بنابراین، کمی کردن مدل به 4 بیت، نیاز به حافظه GPU را به تقریباً 3.5 گیگابایت کاهش می دهد.

2. کدام محاسبه را انتخاب کنیم؟

نمونه‌های AWS مانند g4، g5، p3 و p4 آخرین نسل نمونه‌های مبتنی بر GPU هستند و بالاترین عملکرد را در Amazon EC2 برای یادگیری عمیق و محاسبات با کارایی بالا (HPC) ارائه می‌کنند.

چند نمونه از محاسبه و هزینه به شرح زیر است:

نوع نمونه
نوع GPU
حافظه GPU (GB)
vCPU ها
قیمت درخواستی (در ساعت)

g4dn.xlarge
NVIDIA T4
16
4
0.526 دلار

g5.xlarge
NVIDIA A10G
24
4
1.006 دلار

p3.2xlarge
NVIDIA V100
16
8
3.06 دلار

g4dn.12xlarge
NVIDIA T4
192
48
4.344 دلار

g5.8xlarge
NVIDIA A10G
96
32
8.288 دلار

p3.8xlarge
NVIDIA V100
64
32
12.24 دلار

p4d.24xlarge
NVIDIA A100
320
96
32.77 دلار

راهنمای گام به گام

از آنجایی که ما از تمام ریاضیات و منابع مورد نیاز خود آگاه هستیم، بیایید به استقرار برنامه LLM در AWS بپردازیم.

مرحله – 1

EC2 را در کنسول AWS خود جستجو کنید. صفحه مشابهی برای EC2 خواهید دید.

مرحله – 2

از نوار کناری روی Instance کلیک کنید و سپس روی Launch Instance کلیک کنید

مرحله – 3

نمونه EC2 را با استفاده از تنظیمات زیر پیکربندی کنید و یک نمونه جدید راه اندازی کنید.

نام: نام برنامه شماتصویر ماشین آمازون (AMI): اوبونتو-جدیدتریننوع نمونه: g4dn.xlargeجفت کلید: یک جفت کلید جدید ایجاد کنید و از آن استفاده کنیدتنظیمات شبکه: از پیش فرض با اضافه کردن استفاده کنید “Allow HTTPS traffic from the internet” & “Allow HTTP traffic from the internet”ذخیره سازی: 16 گیگابایت

مرحله – 4 (فقط برای برنامه Streamlit)

به نمونه جدیدی که اخیراً راه اندازی شده است بروید و چند نقش ورودی را تعریف کنید، زیرا ما یک برنامه استریم لیت را اجرا می کنیم و روی پورت اجرا می شود. 8501، ما باید آن قانون را تعریف کنیم.

در اینجا، روی «ویرایش قوانین ورودی» کلیک می کنیم و نقش سفارشی TCP زیر را با پورت اضافه می کنیم 8501 و کلیک کنید قوانین را ذخیره کنید.

مرحله – 5

به صفحه EC2 که اخیراً راه اندازی شده است بروید و روی دکمه اتصال کلیک کنید و سپس نمونه اخیر ایجاد شده خود را متصل کنید.

مرحله – 6

پس از اتصال، ترمینالی را مشاهده می کنید که در آن باید دستورات زیر را برای نصب وابستگی ها و به روز رسانی های مورد نیاز اجرا کنید.

دستورات:

sudo apt update
sudo apt-get update
sudo apt upgrade -y
sudo apt install git curl unzip tar make sudo vim wget -y
sudo apt install python3-pip

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله – 7

پس از دانلود تمام وابستگی ها، باید با GitHub ارتباط برقرار کنید تا برنامه استریم لیت خود و الزامات آن را از مخزن GitHub کلون کنید (دانلود کنید).

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

git clone “Your-repository”

پس از کلون سازی، می توانید با استفاده از دستور زیر مخزن خود را وارد کنید:

cd “Your-repository”

مرحله – 8

ابتدا باید یک محیط مجازی راه اندازی کنیم تا مطمئن شویم که تمام وابستگی های برنامه Streamlit در یک محیط ایزوله نصب شده اند. این به جلوگیری از درگیری با بسته های پایتون در سراسر سیستم کمک می کند.

sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که محیط مجازی ایجاد شد، باید هر مورد نیاز را برای برنامه Streamlit نصب کنیم. برای این کار استفاده خواهیم کرد pip برای خواندن requirements.txt تمامی کتابخانه های تعریف شده در آن فایل را فایل و دانلود کنید.

pip install -r requirements.txt

مرحله – 9

هنگامی که همه چیز نصب و آماده شد، نوبت به اجرای برنامه مبتنی بر LLM می رسد.

برای این کار دستور زیر را اجرا می کنید:

python3 -m streamlit run
python3 -m streamlit run app.py

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که روی پیوند خارجی کلیک کنید، به برنامه استریم لیت شما هدایت می شود. و این پیوند عمومی است که می توانید با دوستان خود به اشتراک بگذارید و آنها نیز می توانند از برنامه شما لذت ببرند.

وایلا!!!

دستور بالا برنامه را تا زمانی که ترمینال شما متصل شود اجرا می کند. پس از بسته شدن برنامه نیز کار نمی کند.

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

nohup python3 -m streamlit run app.py

این nohup تضمین می کند که برنامه حتی اگر از سیستم خارج شوید یا جلسه ترمینال خود را از دست بدهید، همچنان اجرا می شود.

نتیجه گیری

استقرار LLM ها نباید توسط سخت افزار شما محدود شود. AWS یک روش منعطف و مقرون به صرفه برای استفاده از قدرت LLM ها بدون سرمایه گذاری در پردازنده های گرافیکی گران قیمت ارائه می دهد. با استفاده از نمونه مناسب و برخی تکنیک‌های بهینه‌سازی مانند کوانتیزه کردن، می‌توانید مدل‌های پیچیده را در فضای ابری به طور موثر اجرا کنید. با پیروی از این راهنما، اکنون مجهز به استقرار برنامه مبتنی بر LLM خود هستید و آن را قابل دسترسی و مقیاس‌پذیر می‌کنید. بنابراین، در استقرار ابری غوطه ور شوید، نوآوری های خود را بدون زحمت به اشتراک بگذارید و اجازه دهید برنامه شما به پتانسیل کامل خود برسد!

مرجع:

https://aws.amazon.com/ec2/instance-types/
https://docs.aws.amazon.com/ec2/index.html
https://docs.streamlit.io/

آیا تا به حال شده است که از به کارگیری مدل زبان بزرگ (LLM) خود هیجان زده شده باشید، اما به دلیل اینکه لپ تاپ شما از عهده وظایفش بر نمی آید، به دیوار برخورد کرده اید؟ من دقیقا می دانم که چه احساسی دارد. LLM ها قدرتمند هستند، اما به قدرت محاسباتی زیادی نیاز دارند – چیزی که اکثر ما در دسترس نداریم.

من خودم به این مشکل برخوردم من می خواستم با استفاده از LLM یک برنامه کاربردی جالب بسازم که دوستانم بتوانند از آن استفاده کنند، اما ایده خرید یک GPU گران قیمت فقط برای کارکرد آن منتفی بود. بنابراین، من شروع به جستجوی راه حل کردم. آن موقع بود که به طور تصادفی با AWS برخورد کردم.

استفاده از AWS یک نجات دهنده بود. من نیازی به سرمایه گذاری روی هیچ سخت افزار فانتزی نداشتم. در عوض، AWS به شما امکان می‌دهد فقط برای آنچه استفاده می‌کنید بپردازید. اکنون، من سه برنامه مختلف LLM در حال اجرا در فضای ابری دارم، و نیازی به خرج کردن پول زیادی برای تجهیزات ندارم.

در این پست، من شما را با نحوه راه‌اندازی LLM خود در فضای ابری گام به گام آشنا می‌کنم و نکاتی را برای صرفه‌جویی در هزینه‌های خود به اشتراک می‌گذارم. اگر من بتوانم آن را انجام دهم، شما هم می توانید!

شروع به کار

برای استقرار در AWS، ما باید بدانیم که LLM چگونه محاسبه می‌کند و کدام نمونه می‌تواند برای ما مناسب باشد.

من از یک برنامه RAG مبتنی بر LLM که با Streamlit ساخته شده است، با استفاده از مدل LLama2-7B از Meta استفاده خواهم کرد.

1. درک منبع درست

از آنجایی که هر مدل زبان بزرگ (LLM) تعداد پارامترهای متفاوتی دارد و ممکن است از دقت عددی متفاوتی استفاده کند، برای استنتاج و تنظیم دقیق به قابلیت‌های GPU متفاوتی نیاز دارند.

یک قانون ساده برای تخمین مقدار حافظه GPU مورد نیاز برای ذخیره پارامترهای مدل در طول استنتاج هر LLM منبع باز به شرح زیر است:

حافظه GPU (بر حسب بایت) = تعداد پارامترهای مدل × بیت در هر پارامتر ÷ 8 (بیت در هر بایت)

به عنوان مثال، برای یک مدل 7 میلیارد پارامتری با استفاده از اعداد ممیز شناور 32 بیتی:

حافظه GPU = 7,000,000,000 پارامتر × 32 بیت در هر پارامتر ÷ 8 بیت در هر بایت
حافظه GPU = 28,000,000,000 بایت
حافظه GPU = 28 گیگابایت

با این حال، این نیاز می تواند بسیار بالا باشد. برای کاهش ردپای حافظه، می توانیم از تکنیک های کوانتیزاسیون استفاده کنیم. به عنوان مثال، با استفاده از کوانتیزاسیون 4 بیتی:

حافظه GPU = 7,000,000,000 پارامتر × 4 بیت در هر پارامتر ÷ 8 بیت در هر بایت
حافظه GPU = 3,500,000,000 بایت
حافظه GPU = 3.5 گیگابایت

بنابراین، کمی کردن مدل به 4 بیت، نیاز به حافظه GPU را به تقریباً 3.5 گیگابایت کاهش می دهد.

2. کدام محاسبه را انتخاب کنیم؟

نمونه‌های AWS مانند g4، g5، p3 و p4 آخرین نسل نمونه‌های مبتنی بر GPU هستند و بالاترین عملکرد را در Amazon EC2 برای یادگیری عمیق و محاسبات با کارایی بالا (HPC) ارائه می‌کنند.

چند نمونه از محاسبه و هزینه به شرح زیر است:

نوع نمونه نوع GPU حافظه GPU (GB) vCPU ها قیمت درخواستی (در ساعت)
g4dn.xlarge NVIDIA T4 16 4 0.526 دلار
g5.xlarge NVIDIA A10G 24 4 1.006 دلار
p3.2xlarge NVIDIA V100 16 8 3.06 دلار
g4dn.12xlarge NVIDIA T4 192 48 4.344 دلار
g5.8xlarge NVIDIA A10G 96 32 8.288 دلار
p3.8xlarge NVIDIA V100 64 32 12.24 دلار
p4d.24xlarge NVIDIA A100 320 96 32.77 دلار

راهنمای گام به گام

از آنجایی که ما از تمام ریاضیات و منابع مورد نیاز خود آگاه هستیم، بیایید به استقرار برنامه LLM در AWS بپردازیم.

مرحله – 1

EC2 را در کنسول AWS خود جستجو کنید. صفحه مشابهی برای EC2 خواهید دید.

AWS EC2

مرحله – 2

از نوار کناری روی Instance کلیک کنید و سپس روی Launch Instance کلیک کنید

نمونه EC2

مرحله – 3

نمونه EC2 را با استفاده از تنظیمات زیر پیکربندی کنید و یک نمونه جدید راه اندازی کنید.

نام: نام برنامه شما
تصویر ماشین آمازون (AMI): اوبونتو-جدیدترین
نوع نمونه: g4dn.xlarge
جفت کلید: یک جفت کلید جدید ایجاد کنید و از آن استفاده کنید
تنظیمات شبکه: از پیش فرض با اضافه کردن استفاده کنید "Allow HTTPS traffic from the internet" & "Allow HTTP traffic from the internet"
ذخیره سازی: 16 گیگابایت

پیکربندی-EC2-1
پیکربندی-EC2-2

مرحله – 4 (فقط برای برنامه Streamlit)

به نمونه جدیدی که اخیراً راه اندازی شده است بروید و چند نقش ورودی را تعریف کنید، زیرا ما یک برنامه استریم لیت را اجرا می کنیم و روی پورت اجرا می شود. 8501، ما باید آن قانون را تعریف کنیم.

تغییر پورت

در اینجا، روی «ویرایش قوانین ورودی» کلیک می کنیم و نقش سفارشی TCP زیر را با پورت اضافه می کنیم 8501 و کلیک کنید قوانین را ذخیره کنید.

تغییر پورت 2

مرحله – 5

به صفحه EC2 که اخیراً راه اندازی شده است بروید و روی دکمه اتصال کلیک کنید و سپس نمونه اخیر ایجاد شده خود را متصل کنید.

EC2 Conf

EC2 Conf

مرحله – 6

پس از اتصال، ترمینالی را مشاهده می کنید که در آن باید دستورات زیر را برای نصب وابستگی ها و به روز رسانی های مورد نیاز اجرا کنید.

دستورات:

sudo apt update
sudo apt-get update
sudo apt upgrade -y
sudo apt install git curl unzip tar make sudo vim wget -y
sudo apt install python3-pip
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وابستگی ها

مرحله – 7

پس از دانلود تمام وابستگی ها، باید با GitHub ارتباط برقرار کنید تا برنامه استریم لیت خود و الزامات آن را از مخزن GitHub کلون کنید (دانلود کنید).

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

git clone "Your-repository"

پس از کلون سازی، می توانید با استفاده از دستور زیر مخزن خود را وارد کنید:

cd "Your-repository"

GitHub Repo Clone

مرحله – 8

ابتدا باید یک محیط مجازی راه اندازی کنیم تا مطمئن شویم که تمام وابستگی های برنامه Streamlit در یک محیط ایزوله نصب شده اند. این به جلوگیری از درگیری با بسته های پایتون در سراسر سیستم کمک می کند.

sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که محیط مجازی ایجاد شد، باید هر مورد نیاز را برای برنامه Streamlit نصب کنیم. برای این کار استفاده خواهیم کرد pip برای خواندن requirements.txt تمامی کتابخانه های تعریف شده در آن فایل را فایل و دانلود کنید.

pip install -r requirements.txt

الزامات

مرحله – 9

هنگامی که همه چیز نصب و آماده شد، نوبت به اجرای برنامه مبتنی بر LLM می رسد.

برای این کار دستور زیر را اجرا می کنید:

python3 -m streamlit run 
python3 -m streamlit run app.py
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در حال اجرا LLM

هنگامی که روی پیوند خارجی کلیک کنید، به برنامه استریم لیت شما هدایت می شود. و این پیوند عمومی است که می توانید با دوستان خود به اشتراک بگذارید و آنها نیز می توانند از برنامه شما لذت ببرند.

وایلا!!!

برنامه Streamlit

دستور بالا برنامه را تا زمانی که ترمینال شما متصل شود اجرا می کند. پس از بسته شدن برنامه نیز کار نمی کند.

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

nohup python3 -m streamlit run app.py

این nohup تضمین می کند که برنامه حتی اگر از سیستم خارج شوید یا جلسه ترمینال خود را از دست بدهید، همچنان اجرا می شود.

نتیجه گیری

استقرار LLM ها نباید توسط سخت افزار شما محدود شود. AWS یک روش منعطف و مقرون به صرفه برای استفاده از قدرت LLM ها بدون سرمایه گذاری در پردازنده های گرافیکی گران قیمت ارائه می دهد. با استفاده از نمونه مناسب و برخی تکنیک‌های بهینه‌سازی مانند کوانتیزه کردن، می‌توانید مدل‌های پیچیده را در فضای ابری به طور موثر اجرا کنید. با پیروی از این راهنما، اکنون مجهز به استقرار برنامه مبتنی بر LLM خود هستید و آن را قابل دسترسی و مقیاس‌پذیر می‌کنید. بنابراین، در استقرار ابری غوطه ور شوید، نوآوری های خود را بدون زحمت به اشتراک بگذارید و اجازه دهید برنامه شما به پتانسیل کامل خود برسد!

مرجع:

  1. https://aws.amazon.com/ec2/instance-types/
  2. https://docs.aws.amazon.com/ec2/index.html
  3. https://docs.streamlit.io/

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا