RHEL AI, Red Hat Enterprise Linux’un önyüklenebilir (bootable) bir imajı ile birlikte gelir ve kurumsal kullanıma hazır InstructLab ile Granite dil modellerini entegre ederek hibrit altyapılarda kolay ve güvenli dağıtım imkânı sunar.
Bu yapı, açık kaynak lisanslı üretken yapay zeka (GenAI) modellerini kurumsal ortamlara taşımak için güçlü bir temel model platformu sağlar. Böylece hem altyapı karmaşıklığı azaltılır hem de test ve deneme süreçlerinin önündeki engeller ortadan kaldırılarak inovasyon hızlandırılır.
Platform, aşağıdaki temel bileşenleri destekler:
• vLLM, DeepSpeed ve PyTorch gibi yüksek performanslı AI çalışma motorları,
• Podman ve RHEL Image Mode ile container tabanlı çalışma altyapısı,
• Kubernetes ve OpenShift ile yatayda ölçeklenebilir dağıtım mimarileri.
Kullanıcılar, InstructLab aracılığıyla büyüyen açık kaynak AI topluluğuna katılarak, modellerine yeni yetenekler ve veri kümeleri kazandırabilir; bu süreci daha etkili ve uygun maliyetli hâle getirebilirler.
Bugün RHEL AI üzerinde neler yapabileceğimizi görmek için öncelikle sistemin mevcut durumunu komut satırı üzerinden analiz edelim:
[instruct@bastion ~]$ cat /etc/os-release
NAME=”Red Hat Enterprise Linux”
VERSION=”9.20241104.0.4 (Plow)”
ID=”rhel”
ID_LIKE=”fedora”
VERSION_ID=”9.4″
PLATFORM_ID=”platform:el9″
PRETTY_NAME=”Red Hat Enterprise Linux 9.20241104.0.4 (Plow)”
ANSI_COLOR=”0;31″
LOGO=”fedora-logo-icon”
CPE_NAME=”cpe:/o:redhat:enterprise_linux:9::baseos”
HOME_URL=”https://www.redhat.com/”
DOCUMENTATION_URL=”https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9″
BUG_REPORT_URL=”https://issues.redhat.com/”
REDHAT_BUGZILLA_PRODUCT=”Red Hat Enterprise Linux 9″
REDHAT_BUGZILLA_PRODUCT_VERSION=9.4
REDHAT_SUPPORT_PRODUCT=”Red Hat Enterprise Linux”
REDHAT_SUPPORT_PRODUCT_VERSION=”9.4″
OSTREE_VERSION=’9.20241104.0′
VARIANT=”RHEL AI”
VARIANT_ID=rhel_ai
RHEL_AI_VERSION_ID=’1.3.0′
[instruct@bastion ~]$
Bu komutun çıktısına göre, sistem Red Hat Enterprise Linux 9.4 tabanlıdır ve üzerinde RHEL AI 1.3.0 varyantı çalışmaktadır. Bu sürüm, yapay zekâ iş yükleri için özel olarak optimize edilmiş; InstructLab ve Granite gibi bileşenlerle entegre şekilde gelen, üretim ortamına hazır bir platform sunar.[instruct@bastion ~]$ uname -r
5.14.0-427.42.1.el9_4.x86_64
[instruct@bastion ~]$
Çekirdek sürümünün 5.14.0-427.42.1.el9_4.x86_64 olması, bu sistemin RHEL 9.4’e özel olarak yapılandırılmış 64 bit bir Linux çekirdeği üzerinde çalıştığını gösterir. Bu yapı, özellikle container tabanlı uygulamalar ve donanım hızlandırmalı AI iş yükleri için kurumsal düzeyde kararlılık ve yüksek uyumluluk sağlar.
[instruct@bastion ~]$ ilab system info
Platform:
sys.version: 3.11.7 (main, Oct 9 2024, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)]
sys.platform: linux
os.name: posix
platform.release: 5.14.0-427.42.1.el9_4.x86_64
platform.machine: x86_64
platform.node: bastion.n5zwg.internal
platform.python_version: 3.11.7
os-release.ID: rhel
os-release.VERSION_ID: 9.4
os-release.PRETTY_NAME: Red Hat Enterprise Linux 9.4 (Plow)
memory.total: 15.01 GB
memory.available: 14.05 GB
memory.used: 0.64 GB
InstructLab:
instructlab.version: 0.21.2
instructlab-dolomite.version: 0.2.0
instructlab-eval.version: 0.4.1
instructlab-quantize.version: 0.1.0
instructlab-schema.version: 0.4.1
instructlab-sdg.version: 0.6.1
instructlab-training.version: 0.6.1
Torch:
torch.version: 2.4.1
torch.backends.cpu.capability: AVX2
torch.version.cuda: 12.4
torch.version.hip: None
torch.cuda.available: True
torch.backends.cuda.is_built: True
torch.backends.mps.is_built: False
torch.backends.mps.is_available: False
torch.cuda.bf16: True
torch.cuda.current.device: 0
torch.cuda.0.name: NVIDIA L4
torch.cuda.0.free: 21.8 GB
torch.cuda.0.total: 22.0 GB
torch.cuda.0.capability: 8.9 (see https://developer.nvidia.com/cuda-gpus#compute)
llama_cpp_python:
llama_cpp_python.version: 0.2.79
llama_cpp_python.supports_gpu_offload: True
[instruct@bastion ~]$
ilab system info komutu ile elde edilen çıktıya göre sistem, Red Hat Enterprise Linux 9.4 (Plow) üzerinde çalışan ve yapay zekâ uygulamaları için özel olarak hazırlanmış güçlü bir ortamdır. Sistem 64 bit mimaride (x86_64) çalışmakta, Python 3.11.7 sürümünü kullanmaktadır. Toplam 15 GB belleğe sahiptir. İşletim sistemi, AI uygulamaları için optimize edilmiş 5.14.0 çekirdek sürümüyle donatılmıştır.
Sistem, InstructLab platformunun tam bileşen setiyle birlikte gelmektedir. InstructLab, büyük dil modellerine (LLM) yeni bilgiler ve yetenekler eklemek için kullanılan açık kaynaklı bir araçtır.
instructlab-dolomite: Modelin mimarisini tanımlar, özellikle Granite modelleri gibi dolomite tabanlı yapıları işler.
instructlab-eval: Eğitilen modellerin kalitesini test etmek için değerlendirme araçları sunar.
instructlab-quantize: Modelleri daha az bellekle çalışacak şekilde küçültür; bu sayede daha hızlı ve verimli hale gelir.
instructlab-schema: Kullanıcının tanımladığı bilgilerin yapısal doğruluğunu kontrol eder.
instructlab-sdg (Skill Data Generator): Kullanıcının verdiği bilgilere göre eğitim verisi üretir.
instructlab-training: Yeni bilgilerin modele kazandırılması (fine-tuning) için eğitim işlemlerini gerçekleştirir.
Bu modüller bir arada kullanılarak modelleri güncellemek, özelleştirmek ve değerlendirmek mümkün hale gelir.
PyTorch, yapay zekâ uygulamaları geliştirmek ve çalıştırmak için kullanılan açık kaynaklı bir yazılım kütüphanesidir. En basit şekilde, beyin gibi çalışan bir yazılım motorudur diyebiliriz: Verileri işler,
öğrenir, tahminlerde bulunur.
Bir yapay zekâ modelini düşünün, örneğin bir sohbet robotu ya da yazı yazan bir yapay zekâ. Bu modelin “düşünmesini” ve “yanıt vermesini” sağlayan altyapı PyTorch’tur.
CUDA (Compute Unified Device Architecture), NVIDIA tarafından geliştirilen bir teknolojidir. Bilgisayarın ekran kartını (GPU) yalnızca görüntü işlemek için değil, matematiksel hesaplamaları hızlandırmak için de kullanmamıza olanak tanır.
Normalde bir yapay zekâ modeli sadece işlemci (CPU) ile çalışırsa çok yavaş olur. CUDA sayesinde, bu işler ekran kartına (GPU’ya) kaydırılır ve çok daha hızlı sonuç alınır.
Bizim sistemimizde:
CUDA sürümü 12.4, güncel ve uyumlu.
GPU: NVIDIA L4, yapay zekâ görevleri için özel üretilmiş bir ekran kartı.
Toplam GPU belleği: 22 GB → Küçük modeller çalışabilir.
GPU boşta: 21.8 GB → Test yapmak için uygun.
Ayrıca sistem, bf16 (Brain Floating Point 16-bit) gibi modern düşük hassasiyetli sayı formatlarını destekliyor. Bu sayede bellek kullanımı daha az, hız daha fazla olur.
llama_cpp_python Python kütüphanesi, özellikle Meta’nın LLaMA ailesine ait dil modellerini çalıştırmak için kullanılır. GPU üzerinden çalışabilir ve hafif yapısıyla hızlı inference sağlar. Mevcut sistemde yüklü olan llama_cpp_python sürümü 0.2.79’dur ve GPU hızlandırmasını desteklemektedir.
Gördüğümüz gibi sistem, yapay zekâ uygulamaları için gerekli tüm temel bileşenleri hazır ve güncel biçimde barındırmaktadır. PyTorch ile modeller çalıştırılabilir, CUDA (Compute Unified Device Architecture) ile bu işlemler yüksek hızda yapılabilir. InstructLab sayesinde modeller eğitilebilir ve özelleştirilebilir. llama_cpp_python gibi GPU uyumlu araçlar ise farklı model türlerini çalıştırma esnekliği sunar.
“ilab” komutunun opsiyonlarına bakalım.
[instruct@bastion ~]$ ilab –help
Usage: ilab [OPTIONS] COMMAND [ARGS]…
CLI for interacting with InstructLab.
If this is your first time running ilab, it’s best to start with `ilab
config init` to create the environment.
Options:
–config PATH Path to a configuration file. [default:
/var/home/instruct/.config/instructlab/config.yaml]
-v, –verbose Enable debug logging (repeat for even more verbosity)
–version Show the version and exit.
–help Show this message and exit.
Commands:
config Command Group for Interacting with the Config of InstructLab.
data Command Group for Interacting with the Data generated by…
model Command Group for Interacting with the Models in InstructLab.
system Command group for all system-related command calls
taxonomy Command Group for Interacting with the Taxonomy of InstructLab.
Aliases:
chat model chat
generate data generate
serve model serve
train model train
[instruct@bastion ~]$
Şimdi InstructLab”ı başlatalım.
[instruct@bastion ~]$ ilab config init
—————————————————-
Welcome to the InstructLab CLI
This guide will help you to setup your environment
—————————————————-
Please provide the following values to initiate the environment [press ‘Enter’ for default options when prompted]
Cloning https://github.com/instructlab/taxonomy.git…
Generating config file:
/var/home/instruct/.config/instructlab/config.yaml
Detecting hardware…
Please choose a system profile.
Profiles set hardware-specific defaults for all commands and sections of the configuration.
First, please select the hardware vendor your system falls into
[0] NO SYSTEM PROFILE
[1] NVIDIA
Enter the number of your choice [0]: 1
You selected: NVIDIA
Next, please select the specific hardware configuration that most closely matches your system.
[0] NO SYSTEM PROFILE
[1] NVIDIA A100 X2
[2] NVIDIA A100 X4
[3] NVIDIA A100 X8
[4] NVIDIA H100 X2
[5] NVIDIA H100 X4
[6] NVIDIA H100 X8
[7] NVIDIA L4 X8
[8] NVIDIA L40S X4
[9] NVIDIA L40S X8
Enter the number of your choice [hit enter for hardware defaults] [0]: 7
You selected: /var/home/instruct/.local/share/instructlab/internal/system_profiles/nvidia/l4/l4_x8.yaml
——————————————–
Initialization completed successfully!
You’re ready to start using `ilab`. Enjoy!
[instruct@bastion ~]$
[instruct@bastion ~]$ cat ~/.config/instructlab/config.yaml
Bu komut çıktısı çok uzun. Ama özetini aşağıdaki gibi ifade edebilirim.
ilab config.yaml dosyasına göre sistem, Granite 8B dil modeliyle çalışacak şekilde yapılandırılmıştır. Sohbet ve servis işlemleri için granite-8b-lab-v1 modeli, eğitim işlemleri için ise granite-8b-starter-v1 modeli kullanılmaktadır. Eğitim verisi üretiminde öğretici model olarak yüksek kapasiteli mixtral-8x7b-instruct-v0-1 seçilmiştir. Tüm bu yapı, CUDA destekli NVIDIA GPU üzerinde hızlandırılmış olarak çalışacak şekilde optimize edilmiştir ve sistem, InstructLab’in chat, eğitim ve değerlendirme gibi tüm temel işlevlerini eksiksiz şekilde desteklemektedir.
[instruct@bastion ~]$ ilab config show | more
Üste olan komutu da bu bilgileri almak için kullanabilirsiniz.
Şimdi modelleri indirelim. Önce Red Hat’e giriş yapmamız gerekiyor.
[instruct@bastion ~]$ podman login registry.redhat.io
Username: xxxxx.yyyyy
Password:
Login Succeeded!
[instruct@bastion ~]$
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/granite-3.1-8b-starter-v1 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/granite-3.1-8b-starter-v1@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob b19c07c7ada5 done |
Copying blob a05a85bd5165 done |
Copying blob 22b1424e35df done |
Copying blob acc250559fc1 done |
Copying blob dd233853f746 done |
Copying blob f609657ba3e3 done |
Copying blob 935d3259d28f done |
Copying blob 5c78b58d992e done |
Copying blob 625f5206d172 done |
Copying blob adde9662090e done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/granite-3.1-8b-lab-v1 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/granite-3.1-8b-lab-v1@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob ee911225bc65 done |
Copying blob 9e5c20e42c39 done |
Copying blob dd233853f746 done |
Copying blob f609657ba3e3 done |
Copying blob 3411b4c69b70 done |
Copying blob 72438510a985 done |
Copying blob 935d3259d28f done |
Copying blob 5c78b58d992e done |
Copying blob 625f5206d172 done |
Copying blob adde9662090e done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/mixtral-8x7b-instruct-v0-1 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/mixtral-8x7b-instruct-v0-1@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob d0b63fca793c done |
Copying blob 54669c5aec29 done |
Copying blob 47324f06fdb5 done |
Copying blob 9d56d04b36d0 done |
Copying blob 40e6ecbcedfc done |
Copying blob 29e15364d8ab done |
Copying blob 67e0596920fe done |
Copying blob e330eabd70b4 done |
Copying blob 048fa5347877 done |
Copying blob 83bfed6169c1 done |
Copying blob af316ad78402 done |
Copying blob 5882e4366c63 done |
Copying blob 77813d1dbee6 done |
Copying blob ff24540d9967 done |
Copying blob 48bc12845676 done |
Copying blob e56a2e7eda69 done |
Copying blob da627f6a3c8f done |
Copying blob 61e0f22bff93 done |
Copying blob 76466bfc2312 done |
Copying blob 570af3b802be done |
Copying blob 4c603b65cbd5 done |
Copying blob 272f33c76bca done |
Copying blob a8f30ebfaf56 done |
Copying blob 6fa06efa2785 done |
Copying blob 11c08db21487 done |
Copying blob dadfd56d7667 done |
Copying blob 475361439e5c done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/prometheus-8x7b-v2-0 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/prometheus-8x7b-v2-0@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob 17e420ee7a3c done |
Copying blob a375e93d6f89 done |
Copying blob 40e6ecbcedfc done |
Copying blob 9d56d04b36d0 done |
Copying blob 45147a3fae61 done |
Copying blob cc0b434114a0 done |
Copying blob 07529e846183 done |
Copying blob 69239081714b done |
Copying blob 82ba1df1bcff done |
Copying blob 7dfbb89db40a done |
Copying blob d6b91c38dcac done |
Copying blob 042fa6758c75 done |
Copying blob fc2658c9dba2 done |
Copying blob 958bf1eb6fc6 done |
Copying blob 4cfc38eabca1 done |
Copying blob d89723805505 done |
Copying blob ad148e16985f done |
Copying blob 520bd83ae1b8 done |
Copying blob 189922a4c16e done |
Copying blob 96b05ad26199 done |
Copying blob e6086166348b done |
Copying blob af6f32190c41 done |
Copying blob 92470b0bd930 done |
Copying blob a8f30ebfaf56 done |
Copying blob 96bdbb8504d9 done |
Copying blob fc4f0bd70b37 done |
Copying blob dadfd56d7667 done |
Copying blob 7ada2fa1461c done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
Nihayet ihtiyacımız olan modellerin hepsini indirdik.
[instruct@bastion ~]$ ilab model list
+———————————–+———————+———+
| Model Name | Last Modified | Size |
+———————————–+———————+———+
| models/granite-3.1-8b-starter-v1 | 2025-06-01 14:09:31 | 15.2 GB |
| models/granite-3.1-8b-lab-v1 | 2025-06-01 14:16:01 | 15.2 GB |
| models/mixtral-8x7b-instruct-v0-1 | 2025-06-01 14:25:24 | 87.0 GB |
| models/prometheus-8x7b-v2-0 | 2025-06-01 14:36:02 | 87.0 GB |
+———————————–+———————+———+
[instruct@bastion ~]$
LoRA (Low-Rank Adaptation) Nedir? Yapay zekâ modellerini baştan sona yeniden eğitmek çok maliyetlidir. LoRA, bunun yerine yalnızca modelin bazı katmanlarını çok daha az sayıda parametre ile yeniden ayarlayan (fine-tune eden) bir yöntemdir. Bu yöntem, eğitimi hızlandırır, daha az GPU belleği kullanır, ve daha verimli sonuçlar üretir. LoRA adaptörleri, büyük modellerin içine “tak-çalıştır” biçiminde entegre edilebilir. Böylece modeli tamamen değiştirmeden, yeni beceriler kazandırılabilir.
SDG (Synthetic Data Generation) Nedir? Gerçek dünyadan veri toplamak her zaman kolay değildir (maliyet, gizlilik, veri azlığı). Bunun yerine, modelin kendisine veri ürettirilerek eğitim süreci desteklenebilir. Buna sentetik veri üretimi denir. Örneğin: Modelinize “bir doktor hasta ile nasıl konuşur?” öğretmek istiyorsanız, LoRA destekli SDG sayesinde bu diyalogları kendisi üretebilir ve bu verilerle kendini geliştirebilir. Yani LoRA adı verilen özel uyarlama katmanları, büyük yapay zekâ modellerini sıfırdan eğitmek yerine, yalnızca gerekli kısımlarını hızlı ve verimli şekilde yeniden eğitmeye olanak tanır. Bu yöntem, modelin kendi başına yüksek kaliteli sentetik veri üretmesini (Syntetic Data Generation) kolaylaştırır ve böylece yeni beceriler kazandırma sürecini hem hızlandırır hem de kaynak tüketimini azaltır. Şimdi gelin bu adaptörleri indirelim.
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/skills-adapter-v3 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/skills-adapter-v3@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob 4452b845ab9c done |
Copying blob cfc7749b96f6 done |
Copying blob 488e082ff0d1 done |
Copying blob cd99f66c98e5 done |
Copying blob 6f4761a5ce47 done |
Copying blob 01f47425d010 done |
Copying blob d8d4489231c6 done |
Copying blob 5d44fdf2d36d done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
[instruct@bastion ~]$ ilab model download \
–repository docker://registry.redhat.io/rhelai1/knowledge-adapter-v3 \
–release latest
Downloading model from OCI registry:
Model: docker://registry.redhat.io/rhelai1/knowledge-adapter-v3@latest
Destination: /var/home/instruct/.cache/instructlab/models
Copying blob 82d96d7a9e6c done |
Copying blob e84e60569620 done |
Copying blob c4334cbcdf17 done |
Copying blob cfc7749b96f6 done |
Copying blob 488e082ff0d1 done |
Copying blob 4d0d6bb4d9d0 done |
Copying blob 0f17dc4a3b97 done |
Copying blob d2313c03a149 done |
Copying config 44136fa355 done |
Writing manifest to image destination
[instruct@bastion ~]$
RHEL AI platformu üzerinde gerçekleştirdiğimiz özelleştirme süreci kapsamında toplamda dört büyük model ve iki LoRA adaptörü başarıyla indirildi. Bu bileşenler, özelleştirilmiş bir büyük dil modeli (LLM) üretmek için birbirini tamamlayan görevler üstlenir: İlk olarak, granite-3.1-8b-starter-v1, Red Hat tarafından sunulan temel (base) modeldir ve özelleştirme çalışmalarının üzerine inşa edildiği çekirdek yapıyı oluşturur. Eğer hazır bir şekilde optimize edilmiş model tercih edilirse, onun yerine granite-3.1-8b-lab-v1 kullanılabilir. Bu model, özellikle kurum içi kullanım için daha kararlı ayarlarla sunulur. Özelleştirme sırasında, yapay veriler üretmek için mixtral-8x7b-instruct-v0-1 adlı teacher model devreye girer; bu model, belirlenen konuya uygun yeni veri örnekleri oluşturarak Synthetic Data Generation (SDG) sürecini besler. Ardından, modelin çıktılarının kalitesini değerlendirmek için prometheus-8x7b-v2-0 adlı judge model kullanılır; bu model, öğretici-öğrenci döngüsünü tamamlar.
Ek olarak, süreci daha verimli ve odaklı hale getirmek amacıyla iki adet LoRA adaptörü yüklenmiştir: skills-adapter-v3 ile modele yeni beceriler (örneğin, komut satırı açıklama kabiliyeti), knowledge-adapter-v3 ile ise belirli alanlarda bilgi artırımı (örneğin finans, sağlık ya da yazılım konuları) sağlanır. LoRA (Low-Rank Adaptation) yaklaşımı, modelin tümünü yeniden eğitmeden yalnızca belirli katmanlarda hafif güncellemeler yaparak hızlı, maliyet etkin ve donanım dostu bir özelleştirme imkânı sunar. Bu model ve adaptör seti, güçlü ve özelleştirilmiş kurumsal yapay zekâ uygulamaları geliştirmek için ihtiyaç duyulan tüm temel bileşenleri sağlamaktadır.
InstructLab, büyük dil modellerini (LLM) eğitmek veya özelleştirmek için sadece örnek cümlelerle değil, hiyerarşik bilgi ağaçlarıyla çalışır. Bu hiyerarşik yapıya taxonomy denir. Taxonomy, modelin eğitileceği veya genişletileceği alanları açıkça tanımlar. Bu sayede: Hangi konulara odaklanacağımız belli olur. SDG (Synthetic Data Generation) sırasında model yalnızca istediğimiz kavramlara göre örnek üretir. Eğitim çıktıları daha verimli ve hedefli hale gelir.
science/
└── astronomy/
└── black_holes/
└── gravity.yaml
Bu yapıyı oluşturalım.
[instruct@bastion ~]$ mkdir -p ~/taxonomy/science/astronomy/black_holes
Yeni bir beceri (skill) tanımı ekleyelim.
[instruct@bastion ~]$ cat < ~/taxonomy/science/astronomy/black_holes/gravity.yaml
name: gravity
description: Gravity is a fundamental force of nature responsible for the attraction between masses.
seed_examples:
– question: What is gravity?
answer: Gravity is the force that attracts two bodies toward each other, especially the attraction of the earth’s mass for bodies near its surface.
– question: How does gravity affect black holes?
answer: Gravity is so strong in black holes that not even light can escape, making them invisible and extremely dense.
EOF
[instruct@bastion ~]$
Sentetik Veri Üretimi (Synthetic Data Generation – SDG)
Veri üretimi için ilab data generate komutunu çalıştıracağız. Bu adımda amaç: Taxonomy’ye (örnek: black_holes) göre modelin öğreneceği örnek soru-cevap çiftleri üretmek.
Aktif Kullanılanlar:
Öğretmen Model (Teacher): mixtral-8x7b-instruct-v0-1
Skills Adapter: skills-adapter-v3
Knowledge Adapter: knowledge-adapter-v3
Henüz Granite modeli kullanılmıyor, bu veri üretim adımıdır, eğitim değil.
Veri üretimi için normalde aşağıdaki komut çalıştırılacaktı. Bu adımda amaç, taxonomy’ye (örnek: black_holes) göre modelin öğrenmesini sağlayacak örnek soru-cevap çiftleri üretmektir.
ilab data generate \
–taxonomy-path ~/taxonomy \
–model /var/home/instruct/.cache/instructlab/models/mixtral-8x7b-instruct-v0-1 \
–output-dir ~/ilab-data \
–pipeline full \
–enable-serving-output
Ancak bu işlem, Red Hat’in sunduğu demo ortamında yeterli memory alanı olmadığı için aşağıdaki hata ile başarısız olmuştur. ☹
[instruct@bastion ~]$
…
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 896.00 MiB…
GPU 0 has a total capacity of 21.95 GiB of which 734.12 MiB is free.
[instruct@bastion ~]$
InstructLab çatısı altında çalışan sentetik veri üretimi (Synthetic Data Generation – SDG) aşamasında, modellerin belirli bir konuya dair anlamlı soru-cevap çiftleri üretmesi gerekmektedir. Bu işlemin merkezinde, öğretmen (teacher) modeli bulunur. Öğretmen modeli, daha sonra eğitilecek olan hedef (student) modele içerik sağlayacak biçimde, belirlenen konu başlıkları üzerinden veri üretir.
InstructLab, bu öğretmen modelini ayağa kaldırmak için vLLM (Very Large Language Model) altyapısını kullanır. vLLM, LLM’leri yüksek verimlilikte çalıştırmak üzere tasarlanmış, GPU optimizasyonu sağlayan ve OpenAI API uyumlu bir sunucu yazılımıdır. Bu sayede öğretmen modeli, gerçek zamanlı olarak “What is a black hole?” gibi başlıklara yanıt üreterek veri oluşturabilir.
vLLM’in burada temel görevi, öğretmen modeli dış dünyaya bir HTTP API üzerinden sunarak, SDG motorunun bu modele sürekli istek gönderip veri üretmesini sağlamaktır. Bu, özellikle yüksek hacimli ve çeşitli veri üretiminde kritik bir rol oynar.
Ancak bu işlem yüksek GPU ve bellek kaynaklarına ihtiyaç duyar. Red Hat’in demo ortamında bu kaynaklar sınırlı olduğundan, test çalışmasında bu adım atlanmış, sentetik veriler manuel olarak hazırlanarak süreç ilerletilmiştir.
Amacımız genel süreci anlamak olduğu için, bu aşamada sentetik veriyi manuel olarak hazırlayıp bir sonraki adıma geçmek bana mantıklı geldi.
[instruct@bastion ~]$ mkdir -p ~/ilab-data/black_holes
[instruct@bastion ~]$
[instruct@bastion ~]$ vi ~/ilab-data/black_holes/data.jsonl
[instruct@bastion ~]$ cat ~/ilab-data/black_holes/data.jsonl
{“messages”: [{“role”: “user”, “content”: “What is a black hole?”}, {“role”: “assistant”, “content”: “A black hole is a region in space-time with a gravitational pull so strong that nothing, not even light, can escape from it.”}]}
{“messages”: [{“role”: “user”, “content”: “How is a black hole formed?”}, {“role”: “assistant”, “content”: “Black holes typically form when massive stars collapse under their own gravity after exhausting their nuclear fuel, often following a supernova explosion.”}]}
{“messages”: [{“role”: “user”, “content”: “What is the event horizon of a black hole?”}, {“role”: “assistant”, “content”: “The event horizon is the boundary surrounding a black hole beyond which no information or matter can escape. It’s the point of no return.”}]}
{“messages”: [{“role”: “user”, “content”: “Do black holes destroy information?”}, {“role”: “assistant”, “content”: “This is still an open question in physics. Stephen Hawking proposed the information paradox, but newer theories suggest that information may be preserved in some form.”}]}
{“messages”: [{“role”: “user”, “content”: “How does the mass of a black hole affect its properties?”}, {“role”: “assistant”, “content”: “As a black hole’s mass increases, its event horizon becomes larger and its gravitational pull stronger. However, the singularity at its center remains a mystery.”}]}
[instruct@bastion ~]$
Beş örnekli data.jsonl dosyan, sentetik veri üretimi adımını başarıyla manuel olarak tamamladığın anlamına geliyor. Artık elimizde:
~/ilab-data/black_holes/data.jsonl konumunda düzgün formatta bir örnek veri seti var, Taxonomy yoluna uygun (black_holes) dizin yapısı hazır, ve içerik, fine-tuning veya LoRA adaptasyonu için uygun şekilde yapılandırıldı. Bir sonraki adım artık bu veriyi kullanarak modelimizi eğitmek (fine-tune) olacak.
Manuel olarak hazırladığımız data.jsonl dosyasını kullanarak, InstructLab aracıyla granite-3.1-8b-starter-v1 modeline taksonomiye özel örnekleri öğretmek için aşağıdaki eğitim komutu çalıştırılmıştır:
ilab train \
–model-path \
–data-path <veri_dosyası> \
–ckpt-output-dir <çıkış_dizini>
[instruct@bastion ~]$ ilab train \
–model-path /var/home/instruct/.cache/instructlab/models/granite-3.1-8b-starter-v1 \
–data-path ~/ilab-data/black_holes/data.jsonl \
–ckpt-output-dir ~/ilab-models/black_holes-trained
LoRA is disabled (rank=0), ignoring all additional LoRA args
INFO 2025-06-01 16:05:07,309 numexpr.utils:161: NumExpr defaulting to 4 threads.
INFO 2025-06-01 16:05:08,001 datasets:59: PyTorch version 2.4.1 available.
…
packing_max_batch_len: 3225
grad_accum: 1
num_batches: 1
avg_samples_per_batch: 5.0
Loading checkpoint shards: 25%|██████████████████████████▎ | 1/4 [00:23<01:09, 23.17s/it]
[instruct@bastion ~]$
Bu komut, özel olarak yapılandırılmış messages formatındaki veriyle modelin LoRA (Low-Rank Adaptation) katmanları üzerinden ince ayar yapmasını sağlar. Faka eğitim süreci maalesef %25’te kaldı, herhangi bir isteğe cevap veremez hale geldi, yeterli kaynak olmadığı için. Fakat ben çalışmama, o kadar emek verdiğim için, en azından genel süreci anlamak için devam edeceğim. Aslında burada, yapacağınız projeye göre doğru kaynak planlamasının önemini bir kez daha anlamış oluyoruz. Aksi halde maalesef hata alıp dururuz. ☹
Normal şartlar altında eğitim işlemi başarıyla tamamlandığında, –ckpt-output-dir ile belirttiğimiz klasörde modelin özelleştirilmiş hali saklanır. Bu çıktılar genellikle aşağıdaki dosyaları içerir:
training_params_and_metrics_global0.jsonl: Eğitim sırasında kullanılan parametreleri ve elde edilen metrikleri içerir.
full_logs_global0.log: Eğitim sürecine dair ayrıntılı log kayıtlarını barındırır.
adapter_model.safetensors (eğer LoRA etkinse): LoRA katmanlarının eğitilmiş ağırlıkları burada saklanır.
Bu dosyalar, modeli tekrar yükleyerek özel eğitimle kazandırılmış becerileri test etmemize olanak sağlar.
Eğitilmiş modeli test etmek için aşağıdaki komutla model servis modunda başlatılır:
ilab model serve \
–model-path ~/ilab-models/black_holes-trained \
–adapter-path /path/to/adapter_model.safetensors \
–port 8000
ilab model serve komutunu çalıştırdığınızda, modelinizi bir REST API servisi olarak başlatmış oluyorsunuz ve bu servis, arka planda vLLM (Virtualized LLM) altyapısını kullanarak çalışıyor. vLLM, yüksek performanslı ve verimli bir LLM sunucusu olup, OpenAI uyumlu API’ler aracılığıyla modelinizi sunmanıza olanak tanır.
Modelinizi bu şekilde servis ettikten sonra, HTTP çağrılarıyla test edebilir veya komut satırından doğrudan sohbet etmek için ilab model chat komutunu kullanabilirsiniz. Bu komut, servis edilen modele bağlanarak bir sohbet arayüzü sağlar. Varsayılan olarak, ilab model chat komutu, ilab model serve ile başlatılan servise bağlanır. Ancak, farklı bir servis URL’sine bağlanmak isterseniz, –endpoint-url parametresini kullanarak özel bir URL belirtebilirsiniz .
ilab model chat –endpoint-url http://127.0.0.1:8000/v1 komutuyla sohbet arayüzünü başlatabilirsiniz.
Bu çalışma, RHEL AI platformunun sunduğu InstructLab mimarisiyle kuruma özel büyük dil modeli (LLM) özelleştirme sürecini adım adım açıklamaktadır. Sentetik veri üretimi, taksonomi temelli bilgi organizasyonu ve LoRA adaptasyonları gibi modern yöntemler sayesinde, donanım kaynakları kısıtlı olsa dahi süreçlerin büyük kısmı başarıyla uygulanabilmiştir. Her ne kadar eğitim aşamasında sınırlı GPU belleği nedeniyle tam model optimizasyonu tamamlanamasa da, genel mimari, bileşenler arası ilişki ve özelleştirme mantığı net biçimde anlatılmıştır. Bu deneyim, üretken yapay zekâ alanında kendi modelini eğitmek isteyenlere, Red Hat’in sağladığı açık kaynak araç setiyle nasıl bir yol izlenebileceğini göstermekte ve daha büyük projeler için güçlü bir temel oluşturmaktadır.
Sarav Asiye Yiğit * 5 Haziran 2025
Kaynakça:
https://developers.redhat.com/products/rhel-ai/overview
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_ai/1.5/html/building_and_maintaining_your_environment/initializing_instructlab





