# README: SLURM ile axolotl Görev Betiği Açıklaması Bu README dosyası, verilen SLURM betiğinin (`mc_job_1.sh`) işleyişini, kullanılan komutların açıklamalarını ve model konfigürasyonuyla ilgili ek bilgileri içermektedir. ## Betik Açıklaması Bu betik, SLURM iş yöneticisi kullanılarak bir GPU işinin bir hesaplama kümesinde (cluster) çalıştırılmasını sağlar. Betikte belirtilen ayarlar doğrultusunda bir modelin ince ayar (fine-tuning) işlemi gerçekleştirilecektir. Bu eğitim, **EuroHPS** platformunda gerçekleştirilmiştir. ### SLURM Yönergeleri Aşağıda betikte kullanılan SLURM komutları ve açıklamaları verilmiştir: ```bash #SBATCH --job-name=mc_job_1 ``` - İşin adı "mc\_job\_1" olarak belirlenmiştir. ```bash #SBATCH --account=dd-24-118 ``` - İşin çalıştırılacağı hesap belirtilmiştir (`dd-24-118`). ```bash #SBATCH --partition=qgpu ``` - İşin gönderileceği SLURM kuyruğu (partition) "qgpu" olarak ayarlanmıştır. ```bash #SBATCH --nodes=1 ``` - İş, yalnızca 1 düğüm (node) üzerinde çalışacaktır. ```bash #SBATCH --ntasks-per-node=1 ``` - Her düğümde yalnızca 1 görev (task) çalıştırılacaktır. ```bash #SBATCH --gpus-per-node=1 ``` - Her düğüm için 1 GPU ayrılmıştır. ```bash #SBATCH --time=3:00:00 ``` - Maksimum çalışma süre 3 saat olarak belirlenmiştir. --- ### Betikteki Komutların Açıklamaları ```bash echo "Starting my GPU job" ``` - Konsola "Starting my GPU job" mesajını yazdırır. ```bash ml OpenMPI/4.1.6-GCC-12.2.0-CUDA-12.4.0 ``` - OpenMPI 4.1.6 modülü yüklenir. Bu modül, GCC 12.2.0 derleyicisi ve CUDA 12.4.0 ile uyumludur. OpenMPI, dağıtık bellek üzerinde çalışan paralel uygulamalar için kullanılan bir mesaj geçiş arabirimidir. ```bash ml Python/3.11.2-GCCcore-12.2.0-bare ``` - Python 3.11.2 modülü yüklenir. Bu Python sürümü, GCC 12.2.0 temelinde çalışmaktadır. ```bash ./run_finetune.sh --cuda-devices 0 --config-path /scratch/project/dd-24-118/mcimen/axolotl_distributed_finetune/configs/model_configs/deneme_8b.yml ``` - `run_finetune.sh` betiği çalıştırılır. #### Argümanlar: - `--cuda-devices 0`: GPU cihazı olarak 0. sıradaki GPU'nun kullanılacağını belirtir. - `--config-path .../deneme_8b.yml`: Betiğin çalıştırılacağı konfigürasyon dosyasının yolunu belirtir. Bu dosya, modelin ince ayar süreç ayarlarını içerir. - `deneme_8b.yml` dosyasındaki `datasets:` bölümünde bulunan `path` alanı güncellenerek farklı veri kümeleriyle eğitim yapılabilir. ### Dataset Yapılandırması Konfigürasyon dosyasında kullanılan veri kümesi şu şekilde tanımlanmıştır: ```yaml datasets: - path: /scratch/project/dd-24-118/mcimen/finetune-newmind/new_format_eurohps_new_domain_new_format/land_train.json type: alpaca ``` Bu veri kümesi **Alpaca formatında** olup **instruction, input ve output** alanlarından oluşmaktadır. Bu veri kümesi `land` verilerini içermektedir. Ayrıca, model çıktıları aşağıdaki gibi bir dizinde saklanacaktır: ```yaml output_dir: modelin kayıt edileceği path ``` Ek olarak, **wandb** konfigürasyonları gibi parametrelerin de revize edilmesi gerekmektedir. ## Model Konfigürasyonu Konfigürasyon dosyasında (`deneme_8b.yml`) şu değişikliklerin yapılması gerekmektedir: - **Base Model**: `Meta-Llama-3.1-8B-Instruct` - **Training Dataset**: `land Turkish Instruction Dataset` - **Organization**: `NewMind AI` - **Collection**: `Eurohps` Ayrıca, diğer checkpointler `/scratch/project/dd-24-118/mcimen/axolotl_distributed_finetune/outputs/instruct-lora-8b-alpaca-land/checkpoint-800` içerisinde bulunabilir. ## Çalıştırma Talimatları Bu betiği bir SLURM kümesinde çalıştırmak için aşağıdaki komut kullanılmalıdır: ```bash sbatch mc_job_1.sh ```