Panduan ini akan membantu Anda merakit dan menguji versi pratinjau pengembang produk RHEL AI.
Selamat datang di Pratinjau Pengembang AI Red Hat Enterprise Linux! Panduan ini dimaksudkan untuk memperkenalkan Anda pada kemampuan Pratinjau Pengembang RHEL AI. Seperti halnya Pratinjau Pengembang lainnya, diharapkan adanya perubahan pada alur kerja ini, otomatisasi dan penyederhanaan tambahan, serta perluasan kemampuan, versi dukungan perangkat keras dan perangkat lunak, peningkatan kinerja (dan pengoptimalan lainnya) sebelum GA.
RHEL AI adalah produk sumber terbuka yang mencakup:
Catatan
RHEL AI ditargetkan pada platform server dan workstation dengan GPU diskrit. Untuk laptop, silakan gunakan InstructLab upstream.
Berikut adalah daftar server yang divalidasi oleh para insinyur Red Hat untuk bekerja dengan Pratinjau Pengembang RHEL AI. Kami mengantisipasi bahwa sistem terbaru yang disertifikasi untuk menjalankan RHEL 9, dengan GPU pusat data terbaru seperti yang tercantum di bawah, akan berfungsi dengan Pratinjau Pengembang ini.
Vendor GPU / Spesifikasi | Pratinjau Pengembang RHEL AI |
---|---|
Dell (4) NVIDIA H100 | Ya |
Mesin Virtual IBM GX3 | Ya |
Lenovo (8) AMD MI300x | Ya |
Instans AWS p4 dan p5 (NVIDIA) | Sedang berlangsung |
Intel | Sedang berlangsung |
Untuk pengalaman terbaik menggunakan periode pratinjau pengembang RHEL AI, kami telah menyertakan pohon taksonomi yang telah dipangkas di dalam wadah InstructLab. Hal ini akan memungkinkan pelatihan validasi selesai dalam jangka waktu yang wajar di satu server.
Rumus: Satu GPU dapat melatih ~250 sampel per menit. Jika Anda memiliki 8 GPU dan 10.000 sampel, perkirakan itu akan memakan waktu lama
Di akhir latihan ini, Anda akan mendapatkan:
bootc
adalah sistem operasi transaksional yang menyediakan dan memperbarui menggunakan image container OCI/Docker. bootc
adalah komponen kunci dalam misi yang lebih luas dari container yang dapat di-boot.
Model container Docker asli yang menggunakan "lapisan" untuk memodelkan aplikasi telah sangat sukses. Proyek ini bertujuan untuk menerapkan teknik yang sama untuk sistem host yang dapat di-boot - menggunakan wadah OCI/Docker standar sebagai format pengangkutan dan pengiriman untuk pembaruan sistem operasi dasar.
Gambar kontainer menyertakan kernel Linux (misalnya /usr/lib/modules
), yang digunakan untuk boot. Saat runtime pada sistem target, ruang pengguna dasar tidak berjalan dalam wadah secara default. Misalnya, dengan asumsi systemd
sedang digunakan, systemd
bertindak sebagai pid1
seperti biasa - tidak ada proses "luar".
Dalam contoh berikut, container bootc diberi label Node Base Image
:
Bergantung pada perangkat keras host build dan kecepatan koneksi internet Anda, pembuatan dan pengunggahan gambar container dapat memakan waktu hingga 2 jam.
m5.xlarge
menggunakan penyimpanan GP3)quay.io
atau image registry lainnya. Daftarkan hostnya (Bagaimana cara mendaftar dan berlangganan sistem RHEL ke Portal Pelanggan Red Hat menggunakan Manajer Langganan Red Hat?)
sudo subscription-manager register --username < username > --password < password >
Instal paket yang diperlukan
sudo dnf install git make podman buildah lorax -y
Kloning repo git Pratinjau Pengembang RHEL AI
git clone https://github.com/RedHatOfficial/rhelai-dev-preview
Otentikasi ke registri Red Hat (Otentikasi Red Hat Container Registry) menggunakan akun redhat.com
Anda.
podman login registry.redhat.io --username < username > --password < password >
podman login --get-login registry.redhat.io
Your_login_here
Pastikan Anda memiliki kunci SSH di host build. Ini digunakan selama pembuatan image toolkit driver. (Menggunakan ssh-keygen
dan berbagi untuk otentikasi berbasis kunci di Linux | Aktifkan Sysadmin)
RHEL AI menyertakan sekumpulan Makefile untuk memfasilitasi pembuatan gambar container. Tergantung pada perangkat keras host build dan kecepatan koneksi internet Anda, proses ini bisa memakan waktu hingga satu jam.
Buat gambar kontainer NVIDIA InstructLab.
make instruct-nvidia
Bangun gambar kontainer vllm
.
make vllm
Bangun gambar kontainer deepspeed
.
make deepspeed
Terakhir, buat image container bootc
RHEL AI NVIDIA. Ini adalah wadah “bootable” mode Gambar RHEL. Kami menyematkan 3 gambar di atas ke dalam wadah ini.
make nvidia FROM=registry.redhat.io/rhel9/rhel-bootc:9.4 REGISTRY= < your-registry > REGISTRY_ORG= < your-org-name >
Gambar yang dihasilkan diberi tag ${REGISTRY}/${REGISTRY_ORG}/nvidia-bootc:latest
. Untuk variabel dan contoh selengkapnya, lihat pelatihan/README.
Dorong gambar yang dihasilkan ke registri Anda. Anda akan merujuk ke URL ini di dalam file kickstart pada langkah berikutnya.
podman push ${REGISTRY} / ${REGISTRY_ORG} /nvidia-bootc:latest
e.g. podman push quay.io/ < your-user-name > /nvidia-bootc.latest
Pada titik ini Anda memiliki image container RHEL AI yang dapat di-boot yang siap diinstal pada host fisik atau virtual.
Anaconda adalah penginstal Red Hat Enterprise Linux, dan tertanam di semua image ISO RHEL yang dapat diunduh. Metode utama mengotomatiskan instalasi RHEL adalah melalui skrip yang disebut Kickstart. Untuk informasi lebih lanjut tentang Anaconda dan Kickstart, baca dokumen ini.
Perintah kickstart baru-baru ini yang disebut ostreecontainer
diperkenalkan dengan RHEL 9.4. Kami menggunakan ostreecontainer
untuk menyediakan wadah nvidia-bootc
yang dapat di-boot yang baru saja Anda masukkan ke registri Anda melalui jaringan.
Berikut adalah contoh file kickstart. Salin ke file bernama rhelai-dev-preview-bootc.ks
, dan sesuaikan untuk lingkungan Anda:
# text
## customize this for your target system
# network --bootproto=dhcp --device=link --activate
## Basic partitioning
## customize this for your target system
# clearpart --all --initlabel --disklabel=gpt
# reqpart --add-boot
# part / --grow --fstype xfs
# ostreecontainer --url quay.io//nvidia-bootc:latest
# firewall --disabled
# services --enabled=sshd
## optionally add a user
# user --name=cloud-user --groups=wheel --plaintext --password
# sshkey --username cloud-user "ssh-ed25519 AAAAC3Nza....."
## if desired, inject an SSH key for root
# rootpw --iscrypted locked
# sshkey --username root "ssh-ed25519 AAAAC3Nza..."
# reboot
Unduh RHEL 9.4 “Boot ISO”, dan gunakan perintah mkksiso
untuk menyematkan kickstart ke dalam RHEL boot ISO.
mkksiso rhelai-dev-preview-bootc.ks rhel-9.4-x86_64-boot.iso rhelai-dev-preview-bootc-ks.iso
Pada titik ini Anda harus memiliki:
nvidia-bootc:latest
: image container yang dapat di-boot dengan dukungan untuk GPU NVIDIArhelai-dev-preview-bootc.ks
: file awal yang disesuaikan untuk menyediakan RHEL dari registri kontainer Anda ke sistem target Anda.rhelai-dev-preview-bootc-ks.iso
: ISO RHEL 9.4 yang dapat di-boot dengan kickstart tertanam. Boot sistem target Anda menggunakan file rhelai-dev-preview-bootc-ks.iso
. anaconda akan menarik gambar nvidia-bootc:latest dari registri Anda dan menyediakan RHEL sesuai dengan file kickstart Anda.
Alternatif : file kickstart dapat disajikan melalui HTTP. Pada instalasi melalui baris perintah kernel dan server HTTP eksternal – tambahkan inst.ks=http(s)://kickstart/url/rhelai-dev-preview-bootc.ks
Sebelum menggunakan lingkungan RHEL AI, Anda harus mengunduh dua model, masing-masing disesuaikan dengan fungsi utama dalam proses penyetelan fidelitas tinggi. Granit digunakan sebagai model siswa dan bertanggung jawab untuk memfasilitasi pelatihan mode baru yang disempurnakan. Mixtral digunakan sebagai model guru dan bertanggung jawab untuk membantu fase pembuatan proses LAB, di mana keterampilan dan pengetahuan digunakan secara bersamaan untuk menghasilkan kumpulan data pelatihan yang kaya.
Settings
.Access Tokens
. Klik tombol New token
dan berikan nama. Token baru hanya memerlukan penggunaan izin Read
karena hanya digunakan untuk mengambil model. Di layar ini, Anda akan dapat membuat konten token dan menyimpan serta menyalin teks untuk diautentikasi. Antarmuka baris perintah ilab
yang merupakan bagian dari proyek InstructLab berfokus pada menjalankan model terkuantisasi ringan pada perangkat komputasi pribadi seperti laptop. Sebaliknya, RHEL AI memungkinkan penggunaan pelatihan dengan ketelitian tinggi menggunakan model presisi penuh. Agar lebih familiar, perintah dan parameternya mencerminkan perintah ilab
InstructLab; namun, implementasi pendukungnya sangat berbeda.
Di RHEL AI, perintah
ilab
adalah wrapper yang bertindak sebagai ujung depan arsitektur container yang sudah dipaketkan sebelumnya pada sistem RHEL AI.
ilab
Langkah pertama adalah membuat direktori kerja baru untuk proyek Anda. Semuanya akan berhubungan dengan direktori kerja ini. Ini akan berisi model, log, dan data pelatihan Anda.
mkdir my-project
cd my-project
Perintah ilab
pertama yang akan Anda jalankan akan menyiapkan lingkungan dasar, termasuk mengunduh repo taksonomi jika Anda mau. Ini akan diperlukan untuk langkah selanjutnya, jadi disarankan untuk melakukannya.
ilab init
Tentukan variabel lingkungan menggunakan token HF yang Anda buat di bagian atas pada Token Akses.
export HF_TOKEN= < paste token value here >
Selanjutnya, unduh model dasar IBM Granite. Penting: Jangan mengunduh model versi “lab”. Model dasar granit paling efektif saat melakukan pelatihan dengan ketelitian tinggi.
ilab download --repository ibm/granite-7b-base
Ikuti proses yang sama untuk mengunduh model Mixtral.
ilab download --repository mistralai/Mixtral-8x7B-Instruct-v0.1
Sekarang setelah Anda menginisialisasi proyek dan mengunduh model pertama Anda, amati struktur direktori proyek Anda
my-project/
├─ models/
├─ generated/
├─ taxonomy/
├─ training/
├─ training_output/
├─ cache/
Map | Tujuan |
---|---|
model | Menyimpan semua model bahasa, termasuk keluaran tersimpan yang Anda hasilkan dengan RHEL AI |
dihasilkan | Output data yang dihasilkan dari fase pembuatan, dibangun berdasarkan modifikasi repositori taksonomi |
taksonomi | Data Keterampilan atau Pengetahuan yang digunakan dengan metode LAB untuk menghasilkan data sintetik untuk pelatihan |
pelatihan | Mengonversi data awal untuk memfasilitasi proses pelatihan |
pelatihan_output | Semua keluaran sementara dari proses pelatihan, termasuk log dan pos pemeriksaan sampel dalam penerbangan |
cache | Cache internal yang digunakan oleh data model |
Langkah selanjutnya adalah menyumbangkan pengetahuan atau keterampilan baru ke dalam repo taksonomi. Lihat dokumentasi InstructLab untuk informasi lebih lanjut dan contoh cara melakukan hal ini. Kami juga memiliki serangkaian latihan laboratorium di sini.
Dengan tambahan data taksonomi tambahan, kini dimungkinkan untuk menghasilkan data sintetis baru untuk melatih model baru. Meskipun demikian, sebelum pembangkitan dapat dimulai, model guru perlu dimulai terlebih dahulu untuk membantu generator dalam menyusun data baru. Dalam sesi terminal terpisah, jalankan perintah “serve” dan tunggu hingga startup VLLM selesai. Perhatikan bahwa proses ini memerlukan waktu beberapa menit untuk diselesaikan
ilab serve
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
Sekarang VLLM melayani mode pengajar, proses pembuatan dapat dimulai menggunakan perintah ilab
generate. Proses ini memerlukan waktu untuk diselesaikan dan akan terus mengeluarkan jumlah total instruksi yang dihasilkan seiring dengan pembaruannya. Defaultnya adalah 5000 instruksi, namun Anda dapat menyesuaikannya dengan opsi --num-instructions
.
ilab generate
Q> How do cytokines influence the outcome of certain diseases involving tonsils?
A> The outcome of infectious, autoimmune, or malignant diseases affecting tonsils may be influenced by the overall balance of production profiles of pro-inflammatory and anti-inflammatory cytokines. Determining cytokine profiles in tonsil studies is essential for understanding the causes and underlying mechanisms of these disorders.
35%|████████████████████████████████████████▉
Selain data terkini yang dicetak ke layar selama pembuatan, keluaran lengkap dicatat dalam folder yang dihasilkan. Sebelum pelatihan, disarankan untuk meninjau keluaran ini untuk memverifikasi bahwa hasilnya memenuhi harapan. Jika kurang memuaskan, coba modifikasi atau buat contoh baru di taksonomi dan jalankan kembali.
less generated/generated_Mixtral * .json
Setelah data yang dihasilkan memuaskan, proses pelatihan dapat dimulai. Meskipun pertama-tama tutup instance VLLM di sesi terminal yang dimulai untuk pembuatan.
CTRL+C
INFO: Application shutdown complete.
INFO: Finished server process [1]
Anda mungkin menerima pengecualian Python KeyboardInterrupt dan pelacakan tumpukan. Hal ini dapat diabaikan dengan aman.
Dengan VLLM dihentikan dan data baru dihasilkan, proses pelatihan dapat diluncurkan menggunakan perintah ilab train
. Secara default, proses pelatihan menyimpan pos pemeriksaan model setelah setiap 4999 sampel. Anda dapat menyesuaikannya menggunakan parameter --num-samples
. Selain itu, pelatihan secara default berjalan selama 10 epoch, yang juga dapat disesuaikan dengan parameter --num-epochs
. Secara umum, lebih banyak epoch akan lebih baik, namun setelah titik tertentu, lebih banyak epoch akan mengakibatkan overfitting. Biasanya disarankan untuk tetap berada dalam 10 periode atau kurang dan melihat titik sampel yang berbeda untuk menemukan hasil terbaik.
ilab train --num-epochs 9
RunningAvgSamplesPerSec=149.4829861942806, CurrSamplesPerSec=161.99957513920629, MemAllocated=22.45GB, MaxMemAllocated=29.08GB
throughput: 161.84935045724643 samples/s, lr: 1.3454545454545455e-05, loss: 0.840185821056366 cuda_mem_allocated: 22.45188570022583 GB cuda_malloc_retries: 0 num_loss_counted_tokens: 8061.0 batch_size: 96.0 total loss: 0.8581467866897583
Epoch 1: 100%|█████████████████████████████████████████████████████████| 84/84 [01:09<00:00, 1.20it/s]
total length: 2527 num samples 15 - rank: 6 max len: 187 min len: 149
Setelah proses pelatihan selesai, entri model baru akan disimpan dalam direktori model dengan lokasi yang dicetak ke terminal
Generated model in /root/workspace/models/tuned-0504-0051:
.
./samples_4992
./samples_9984
./samples_14976
./samples_19968
./samples_24960
./samples_29952
./samples_34944
./samples_39936
./samples_44928
./samples_49920
Perintah ilab serve
yang sama dapat digunakan untuk menyajikan model baru dengan meneruskan opsi –model bersama nama dan sampel
ilab serve --model tuned-0504-0051/samples_49920
Setelah VLLM dimulai dengan model baru, sesi obrolan dapat diluncurkan dengan membuat sesi terminal baru dan meneruskan parameter --model
yang sama ke obrolan (Perhatikan bahwa jika ini tidak cocok, Anda akan menerima pesan kesalahan 404). Ajukan pertanyaan terkait kontribusi taksonomi Anda.
ilab chat --model tuned-0504-0051/samples_49920
╭─────────────────────────────── system ────────────────────────────────╮
│ Welcome to InstructLab Chat w/ │
│ /INSTRUCTLAB/MODELS/TUNED-0504-0051/SAMPLES_49920 (type /h for help) │
╰───────────────────────────────────────────────────────────────────────╯
>>> What are tonsils ?
╭────────── /instructlab/models/tuned-0504-0051/samples_49920 ──────────╮
│ │
│ Tonsils are a type of mucosal lymphatic tissue found in the │
│ aerodigestive tracts of various mammals, including humans. In the │
│ human body, the tonsils play a crucial role in protecting the body │
│ from infections, particularly those caused by bacteria and viruses. │
╰─────────────────────────────────────────────── elapsed 0.469 seconds ─╯
Untuk keluar dari sesi, ketik
exit
Itu saja! Tujuan Pratinjau Pengembang adalah menyampaikan masukan awal kepada pengguna kami. Kami menyadari mungkin ada bug. Dan kami menghargai waktu dan upaya Anda jika Anda telah berhasil sejauh ini. Kemungkinan Anda mengalami beberapa masalah atau perlu memecahkan masalah. Kami mendorong Anda untuk mengajukan laporan bug, permintaan fitur, dan mengajukan pertanyaan kepada kami. Lihat informasi kontak di bawah untuk mengetahui cara melakukannya. Terima kasih!
$ sudo subscription-manager config --rhsm.manage_repos=1
nvidia-smi
untuk memastikan driver berfungsi dan dapat melihat GPUnvtop
(tersedia dalam EPEL) untuk melihat apakah GPU sedang digunakan (beberapa jalur kode memiliki fallback CPU, yang tidak kami inginkan di sini)make prune
dari subdirektori pelatihan. Ini akan membersihkan artefak bangunan lama.--no-cache
ke proses pembangunan make nvidia-bootc CONTAINER_TOOL_EXTRA_ARGS= " --no-cache "
TMPDIR
: make < platform > TMPDIR=/path/to/tmp