تنظیم دقیق LLMS منبع باز برای متن به SQL: تنظیم دستگاهی برای LLM های تنظیم دقیق در WSL2 (ماده 2 از 3)


نویسنده (ها): لورنتز یونگ

در ابتدا منتشر شده در به سمت هوش مصنوعیبشر

تنظیم دقیق LLMS منبع باز برای متن به SQL: تنظیم دستگاهی برای LLM های تنظیم دقیق در WSL2 (ماده 2 از 3)
Llama و Qwen متا و Alibaba هر دو برای رسیدن به حد خود به دست آمده اند. عکس توسط گابریل استوان در بی تظاهر کردن

اگر می خواهید مرور کنید قسمت 1 (بررسی اجمالی پروژه و انگیزه ها) ، لطفا اینجا را کلیک کنید: تنظیم دقیق LLMS منبع باز برای متن به SQL: بررسی اجمالی پروژه و انگیزه ها (ماده 1 از 3) | توسط لورنتز یونگ | ژوئیه ، 2025 | به سمت هوش مصنوعیبشر اگر می خواهید مستقیم به آن پرش کنید قسمت 3 (نتایج و غذاهای کلیدی)، لطفا به اینجا بروید: https://pub.towardsai.net/fine-tuning-source-llms-for-text-text-to-sql-results-and-ke-takeaways-3-2b887951eddda؟source=friends_link&sk=542b07803d03d03d03d03d03d03d03d03d03d03d03d045078078078078078

در این مقاله ، من شما را از طریق فرآیند تنظیم دستگاه برای تنظیم دقیق طی می کنم مدل های بزرگ زبان (LLMS) مانند LLAMA 3.1 8B با استفاده از بهینه سازی خط مشی پاداش هدایت شده (GRPO) ، یک کار متن به SQL را آموزش می دهد. من این مجموعه را بر روی یک سیستم با کارایی بالا با NVIDIA RTX 4090 انجام دادم GPU، در حال اجرا ویندوز 11 با WSL2 (اوبونتو 22.04). من پیکربندی دستگاه خود را ، مراحل نصب و تأیید وابستگی ها ، مسائلی که با آنها روبرو شدم و نحوه حل آنها را شرح می دهم. این راهنما برای هر کسی که به دنبال ایجاد یک محیط مشابه برای آن است ، در نظر گرفته شده است یادگیری ماشین وظایف ، و من تجربه خود را برای کمک به شما در جلوگیری از مشکلات مشترک به اشتراک می گذارم.

تنظیم دستگاه من

من روی یک سیستم قدرتمند کار می کنم که برای آن طراحی شده است یادگیری عمیق وظایف:

  • GPU: nvidia geforce rtx 4090 (24 گیگابایتی VRAM)
  • سیستم عامل: ویندوز 11 با WSL2 (اوبونتو 22.04)
  • نسخه درایور: درایور NVIDIA 566.24 (از CUDA 12.7 پشتیبانی می کند)
  • ابزار اولیه CUDA: هیچ (نصب شده در طول فرآیند)
  • Conda: برای مدیریت محیط زیست استفاده می شود

RTX 4090 جانوری است یادگیری عمیقبا ارائه 24 گیگابایت VRAM ، که برای تنظیم دقیق یک مدل پارامتر 8B مانند Llama 3.1 8b آموزش با کمیت 4 بیتی و لورا کافی است. WSL2 به من اجازه می دهد تا با استفاده از درایور ویندوز Nvidia برای شتاب GPU ، از ابزارهای لینوکس در ویندوز استفاده کنم.

مرحله 1: Driver Nvidia و پشتیبانی CUDA را تأیید کنید

بررسی راننده

از آنجا که WSL2 از درایور Windows Nvidia استفاده می کند ، من ابتدا نسخه درایور و پشتیبانی CUDA را با استفاده از آن بررسی کردم nvidia-smi در دستور Windows Prompt:

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.75 Driver Version: 566.24 CUDA Version: 12.7 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4090 On | 00000000:01:00.0 On | Off |
| 0% 29C P8 6W / 450W | 1707MiB / 24564MiB | 2% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
  • نسخه درایور: 566.24
  • نسخه CUDA پشتیبانی شده: 12.7
  • استفاده از حافظه: 1707MIB / 24564MIB (مقدار زیادی VRAM در دسترس است)

راننده از CUDA 12.7 پشتیبانی می کند ، به این معنی که می تواند برنامه های کامپایل شده با CUDA 12.7 یا قبل از آن را اجرا کند (به عنوان مثال ، 12.1). این به من انعطاف پذیری در انتخاب نسخه ابزار CUDA داد.

مرحله 2: مجموعه ابزار CUDA را روی WSL2 نصب کنید

تلاش و مسئله اولیه

من با تلاش برای نصب CUDA 12.1.0 شروع کردم ، زیرا با Pytorch 2.2.0 سازگار بود (برای کار تنظیم دقیق لازم است). من دویدم:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_531.14_linux.run

اما با خطایی روبرو شدم:

--2025-04-14 13:40:23-- https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_531.14_linux.run
Resolving developer.download.nvidia.com (developer.download.nvidia.com)... 23.48.165.33, 23.48.165.13
Connecting to developer.download.nvidia.com (developer.download.nvidia.com)|23.48.165.33|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-04-14 13:40:25 ERROR 404: Not Found.

URL نامعتبر بود ، به احتمال زیاد به دلیل اینکه Nvidia پرونده را تا آوریل 2025 به روز کرده یا حذف کرده بود.

راه حل: نسخه CUDA کار را پیدا کنید

من این کار را با امتحان کردن نسخه دیگری از CUDA 12.1.0 با پسوند درایور کمی متفاوت حل کردم:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

این کار کرد و نصب با موفقیت انجام شد.

نصب CUDA را تأیید کنید

نصب را تأیید کردم:

nvcc --version

خروجی:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on ...
Cuda compilation tools, release 12.1, V12.1.0

من همچنین متغیرهای محیط را تنظیم کردم:

echo 'export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

مرحله 3: یک محیط Conda ایجاد کنید و Pytorch را نصب کنید

انتخاب نسخه پایتون

من نیاز به نصب Pytorch 2.2.0 با CUDA 12.1 (cu121). Pytorch 2.2.0 (منتشر شده فوریه 2024) از Python 3.8 تا 3.11 پشتیبانی می کند. من Python 3.11 را برای بهبود عملکرد و طول عمر آن انتخاب کردم (تا اکتبر 2027 پشتیبانی می شود) ، اما در صورت بروز مشکلات وابستگی ، آماده شدم تا به 3.10 برگردم.

conda create --name cu121torch220 python=3.11 -y
conda activate cu121torch220

این محیطی به نام ایجاد کرد cu121torch220 با پایتون 3.11.

پیتورچ را نصب کنید

من Pytorch 2.2.0 را با CUDA 12.1 نصب کردم:

pip install torch==2.2.0 --index-url https://download.pytorch.org/whl/cu121

تأییدیه را تأیید کنید

نصب را تأیید کردم:

import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)
print(torch.cuda.get_device_name(0))

خروجی:

2.2.0
True
12.1
NVIDIA GeForce RTX 4090

Pytorch به درستی نصب شد و GPU را تشخیص داد!

مرحله 4: وابستگی های باقی مانده را نصب کنید

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

pip install transformers==4.43.0 datasets==2.20.0 trl==0.8.6 peft==0.11.1 accelerate==0.31.0 bitsandbytes==0.43.1
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install huggingface_hub==0.23.4

این بسته ها عبارتند از:

  • transformers: برای بارگیری و تنظیم دقیق مدل Llama.
  • datasets: برای بارگیری مجموعه داده های متن به SQL.
  • trl: برای آموزش GRPO.
  • peft وت bitsandbytes: برای تنظیم دقیق کارآمد با LORA و کمیت 4 بیتی.
  • unsloth: برای تنظیم دقیق بهینه شده در GPU های Nvidia.
  • huggingface_hub: برای دسترسی به مدل و بارگذاری در بغل کردن صورت.

مسئله بالقوه: تضاد وابستگی

من خاطرنشان كردم كه اگر Python 3.11 باعث ایجاد مشكلات شود bitsandbytes یا unsloth (به عنوان مثال ، خطاهای تلفیقی) ، من محیط را با Python 3.10 بازآفرینی می کنم:

conda deactivate
conda env remove -n cu121torch220
conda create --name cu121torch220 python=3.10 -y
conda activate cu121torch220
pip install torch==2.2.0 --index-url https://download.pytorch.org/whl/cu121

سپس وابستگی ها را دوباره نصب کنید. با این حال ، Python 3.11 در مورد من خوب کار کرد.

مرحله 5: برای بغل کردن صورت وارد شوید

برای دسترسی به مدل آموزش LLAMA 3.1 8B و بعداً مدل تنظیم شده من را بارگذاری کردم ، وارد چهره بغل شدم:

huggingface-cli login

وارد نشانه چهره بغل من شدم (به دست آمده از https://huggingface.co/settings/tokens) و اطمینان حاصل کردم که به آن دسترسی دارم meta-llama/Meta-Llama-3.1-8B-Instructبشر

پایان

تنظیم دستگاه من برای تنظیم دقیق LLM در WSL2 یک فرآیند چند مرحله ای بود که نیاز به توجه دقیق به نسخه های CUDA ، سازگاری درایور و محیط های پایتون داشت. من با مسائلی مانند URL نامعتبر Cuda Download و یک خطای نحوی در دستور CONDA روبرو شدم ، اما آنها را با یافتن یک نصب کننده CUDA در حال کار و تصحیح نحو فرمان حل کردم. تنظیم نهایی من از CUDA 12.1.0 ، Pytorch 2.2.0 و Python 3.11 در یک محیط Conda استفاده می کند و تمام وابستگی های نصب و تأیید شده است.

این تنظیم اکنون برای تنظیم دقیق LLAMA 3.1 8b برای آموزش یک کار متن به SQL با استفاده از GRPO آماده است. در مقاله آینده ، من روند تنظیم دقیق ، نتایج ارزیابی را به اشتراک می گذارم. اگر شما در حال راه اندازی یک سیستم مشابه هستید ، امیدوارم که این راهنما به شما کمک کند تا با چالش هایی که با آن روبرو هستم حرکت کنید!

در اینجا وابستگی ENV مجازی من برای راحتی شما وجود دارد:

accelerate==1.6.0
aiohappyeyeballs==2.6.1
aiohttp==3.11.16
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.9.0
attrs==25.3.0
bitsandbytes==0.45.5
certifi==2025.1.31
charset-normalizer==3.4.1
contourpy==1.3.2
cut-cross-entropy==25.1.1
cycler==0.12.1
datasets==2.21.0
dill==0.3.8
distro==1.9.0
docstring-parser==0.16
filelock==3.13.1
fonttools==4.57.0
frozenlist==1.5.0
fsspec==2024.5.0
h11==0.14.0
hf-transfer==0.1.9
httpcore==1.0.8
httpx==0.27.0
huggingface-hub==0.30.2
idna==3.10
jinja2==3.1.4
jiter==0.9.0
kiwisolver==1.4.8
markdown-it-py==3.0.0
markupsafe==2.1.5
matplotlib==3.10.1
mdurl==0.1.2
mpmath==1.3.0
multidict==6.4.3
multiprocess==0.70.16
networkx==3.3
numpy==2.1.2
openai==1.51.2
pandas==2.2.3
peft==0.13.0
pillow==11.2.1
propcache==0.3.1
protobuf==3.20.3
pyarrow==19.0.1
pyarrow-hotfix==0.6
pydantic==2.11.3
pydantic-core==2.33.1
pyparsing==3.2.3
python-dotenv==1.0.1
pytz==2025.2
pyyaml==6.0.2
regex==2024.11.6
requests==2.32.3
rich==14.0.0
safetensors==0.5.3
sentencepiece==0.2.0
shtab==1.7.2
sniffio==1.3.1
sqlglot==25.1.0
sqlparse==0.5.1
sympy==1.13.1
tokenizers==0.21.1
torch==2.6.0
tqdm==4.67.1
transformers==4.48.2
triton==3.2.0
trl==0.15.2
typeguard==4.4.2
typing-inspection==0.4.0
tyro==0.9.18
tzdata==2025.2
unsloth==2025.3.19
unsloth-zoo==2025.3.17
urllib3==2.4.0
xxhash==3.5.0
yarl==1.19.0

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

از نویسنده پشتیبانی کنید

اگر این مقاله را مفید دیدید ، لطفاً اهداء به شیشه نوک پی پال من را در نظر بگیرید!

با استفاده از paypal.me pui yug را بپردازید

به paypal.me/entzyeung بروید و مبلغ را وارد کنید. ایمن تر و ایمن تر است. حساب پی پال ندارید؟ مشکلی نیست

paypal.me

پشتیبانی شما به معنای جهان برای من است و به من اجازه می دهد تا در این جاده تنها اکتشافی بمانم – به آزمایش ، نوشتن مقاله ، آموزش آموزش ، …

ممنون

منتشر شده از طریق به سمت هوش مصنوعی



منبع: https://towardsai.net/p/l/fine-tuning-open-source-llms-for-text-to-sql-setting-up-a-machine-for-fine-tuning-llms-on-wsl2-article-2-of-3