GPU untuk proyek Anda · pembayaran kripto tanpa KYC Cara menyewa
Bahasa Indonesia
Buka konsol
Integrasi ke proyek / KERNODECK

Berikan proyek Anda antarmuka yang dapat Anda kendalikan.

Tentukan apa yang diterima aplikasi Anda, bagaimana aplikasi itu dimulai, dan apa yang membuktikan keberhasilannya. Perintah yang stabil dan output yang terdeskripsi memungkinkan peluncuran ulang proyek yang sama dari terminal, skrip, atau alat Anda sendiri. Contoh di bawah ini berkaitan dengan program developer dan pemantauannya, dengan pra-kontrol konfigurasi yang dapat disesuaikan.

1. Pisahkan program, parameternya, dan pelacakan komersial

Kode mendeskripsikan perilaku program. Konfigurasi menentukan beban kerja: model, data, batch, presisi, dan tujuan. Secret memberikan akses ke sumber daya yang diperlukan. Jaga elemen-elemen ini tetap terpisah agar dapat mengubah percobaan tanpa menulis ulang kode atau menyalin token ke dalam file bersama.

Referensi perintah Kernodeck memungkinkan Anda menemukan konteks penyewaan di akun Anda. Identitas percobaan membedakan eksekusi program Anda selama periode tersebut. Hubungkan keduanya dalam catatan Anda jika itu membantu, tetapi jangan meminta skrip Anda menyimpulkan status komputasi dari status pembayaran.

Ambil contoh proyek klasifikasi dokumen yang harus dijalankan beberapa kali pada sampel yang sama. Kontrak program mendeskripsikan file input, parameter yang diterima, folder output, dan cara menampilkan error. Panduan tentang data menjabarkan validasi konten; di sini, kami menyusun antarmuka yang menghubungkan tahapan-tahapan tersebut.

2. Tulis kontrak input yang eksplisit dan berversi

Dokumentasikan field wajib dan nilai yang diterima. Hindari nilai default tersembunyi untuk keputusan yang mengubah hasil, seperti model atau perangkat. Nomor skema membedakan bentuk konfigurasi dari versi kode; nomor ini tidak menggantikan versi kode tersebut.

Dalam contoh edukatif ini, file JSON berisi skema, path input, batch, dan perangkat yang diminta. Path relatif dibaca dari folder konfigurasi. Aturan yang dipilih untuk contoh ini menghindari ketergantungan pada direktori tempat rekan kerja menjalankan perintah.

Membaca JSON hanya memvalidasi sintaksisnya. Program Anda kemudian harus memeriksa tipe, field, dan batasan proyek. Jika terjadi error, program harus berhenti sebelum memuat sumber daya yang mahal, dengan pesan yang menyebutkan parameter yang perlu diperbaiki.

config/pilote.json — contoh kontrak minimal
{
  "schema_version": 1,
  "input": "../data/pilote.jsonl",
  "batch_size": 4,
  "device": "cuda"
}

3. Siapkan titik masuk yang menolak error sederhana

argparse memungkinkan Anda mendeklarasikan opsi dan menghasilkan bantuan untuk perintah Anda. Contoh berikut hanyalah pra-kontrol: contoh ini membaca konfigurasi, memeriksa field-nya, dan mendeteksi folder output yang sudah digunakan. Contoh ini tidak memuat model atau data ke memori dan tidak menguji ketersediaan GPU.

Simpan kode edukatif ini ke prepare_run.py jika Anda ingin menyesuaikannya. Kode ini disediakan tanpa eksekusi yang terverifikasi. Selanjutnya tambahkan pemeriksaan bisnis Anda di aplikasi, alih-alih menganggap pesan akhir sebagai hasil komputasi. Perangkat cuda tetap merupakan permintaan; PyTorch juga menggunakan nama ini dengan ROCm.

Penolakan terhadap direktori output yang sudah ada di sini merupakan konvensi perlindungan terhadap tercampurnya percobaan. Perintah pemulihan yang sesungguhnya harus menerima opsi dan pemeriksaan yang berbeda. Jangan mengubah peluncuran baru menjadi pemulihan implisit hanya karena ada file yang tersedia.

Pra-kontrol edukatif untuk antarmuka proyek
import argparse
import json
from pathlib import Path

parser = argparse.ArgumentParser(description="Memvalidasi peluncuran proyek")
parser.add_argument("--config", type=Path, required=True)
parser.add_argument("--run-dir", type=Path, required=True)
args = parser.parse_args()

try:
    config_path = args.config.resolve()
    config = json.loads(config_path.read_text(encoding="utf-8"))
except (OSError, UnicodeError, json.JSONDecodeError) as exc:
    parser.error(f"Konfigurasi tidak dapat dibaca: {exc}")

expected = {"schema_version", "input", "batch_size", "device"}
if not isinstance(config, dict) or set(config) != expected:
    parser.error("Bidang yang diharapkan: schema_version, input, batch_size, device")
if type(config["schema_version"]) is not int or config["schema_version"] != 1:
    parser.error("schema_version harus bernilai 1")
if type(config["batch_size"]) is not int or config["batch_size"] < 1:
    parser.error("batch_size harus berupa bilangan bulat positif")
if config["device"] not in ("cpu", "cuda"):
    parser.error("device harus bernilai cpu atau cuda")
if not isinstance(config["input"], str) or not config["input"]:
    parser.error("input harus berupa jalur yang tidak kosong")

input_path = (config_path.parent / config["input"]).resolve()
run_dir = args.run_dir.resolve()
if not input_path.is_file():
    parser.error("Berkas masukan tidak ada")
if run_dir.exists():
    parser.error("Pilih direktori keluaran baru")

print(json.dumps({
    "status": "configuration_validated",
    "input": str(input_path),
    "run_dir": str(run_dir),
    "device_requested": config["device"],
    "batch_size": config["batch_size"]
}, ensure_ascii=False))
Pemanggilan pra-pemeriksaan yang disarankan
python prepare_run.py --config config/pilote.json --run-dir runs/pilote-001

4. Memberi identitas pada eksekusi dan hasilnya

Kaitkan setiap peluncuran dengan pengenal pendek yang unik dalam kampanye Anda. Catat revisi kode, skema, dan parameter yang benar-benar digunakan, lalu referensi data dan model. Simpan nilai-nilai ini bersama keluaran agar sebuah hasil tidak bergantung pada berkas konfigurasi yang diubah di kemudian hari.

Untuk membandingkan dua ukuran batch, buat dua percobaan dan dua direktori. Pertahankan sampel yang sama dan identifikasi perbedaan yang disengaja. Nama pilote-001 dan pilote-002 tidak dengan sendirinya menjelaskan apa yang berubah: manifes menghubungkan nama dengan parameter.

Sediakan format ringkasan yang dapat dibaca oleh perkakas Anda. Format itu dapat membedakan elemen yang diterima, berhasil, ditolak, dan yang masih harus diproses. Pilih aturan keberhasilan yang lengkap dan jangan menandai sebuah percobaan selesai begitu hasil pertama ditulis. Kode keluar program harus tetap konsisten dengan kesimpulan ini.

Geser tabel untuk membaca semua kolom.
Kontrak keluaran untuk pemrosesan per dokumen
Berkas atau statusPeranPemeriksaan yang diharapkan
manifest.jsonIdentitas kode, data, dan parameterNilai yang benar-benar digunakan, tanpa rahasia.
results.jsonlSatu keluaran per elemen yang diterimaPengenal yang dikenal dan format yang sesuai.
errors.jsonlElemen yang ditolak dan alasan yang bergunaTidak ada penghilangan diam-diam atau konten sensitif yang tidak perlu.
summary.jsonKesimpulan percobaan dan penghitungJumlah yang konsisten, berkas dibaca ulang sebelum status akhir.

5. Menampilkan peristiwa yang berguna bagi perkakas Anda

Buat beberapa transisi menjadi terlihat: konfigurasi diterima, data dapat diakses, model dimuat, keluaran pertama ditulis, dan pemrosesan selesai. Sebuah jejak harus memungkinkan menjawab “sejauh mana peluncuran ini?” tanpa menyalin dokumen atau prompt. Kaitkan tahap dan pengenal percobaan dengan pesan.

Modul logging di Python memungkinkan pengorganisasian pesan berdasarkan tingkat dan tujuan. Selanjutnya pilih konvensi peristiwa Anda sendiri dan dokumentasikan. Aplikasi yang menulis galat lalu berakhir dengan sukses membuat otomatisasi menyesatkan; sebaliknya, setiap peringatan tidak berarti hasilnya tidak dapat digunakan.

Jangan mencampuradukkan peristiwa yang dikirim dengan hasil yang bertahan: pesan “pencadangan dimulai” tidak membuktikan bahwa sebuah berkas telah dibaca ulang. Untuk eksekusi yang berjalan lama, panduan khusus menjelaskan keterkaitan antara proses dan sesi. Antarmuka Anda terutama harus menyimpan kesimpulan yang dapat diakses setelah koneksi interaktif berakhir.

6. Menentukan kegagalan, pemulihan, dan verifikasi akhir

Klasifikasikan kegagalan yang berguna: konfigurasi tidak valid, sumber daya tidak ada, kesalahan komputasi, dan hasil yang tidak sesuai. Berikan langkah berikutnya untuk masing-masing. Jangan pasang percobaan ulang otomatis tanpa memutuskan efek mana yang boleh diulang: menulis ulang keluaran yang sudah diterima dan melanjutkan dari checkpoint memerlukan aturan yang berbeda.

Prosedur akhir Anda menjelaskan cara menjalankan, memantau, menghentikan, melanjutkan, dan mengekspor. Untuk pemrosesan dokumen, simpan daftar ID yang sudah selesai dan yang perlu diproses ulang. Untuk pelatihan, gunakan protokol yang memverifikasi status tersimpan dalam proses baru. Folder yang tidak kosong bukan bukti bahwa kelanjutan berjalan dengan benar.

Terakhir, uji proyek dari pemanggilan baru, dengan konfigurasi yang diketahui dan tujuan yang berbeda. Verifikasi penolakan yang diharapkan, lalu jalankan alur lengkap yang kecil. Pemeriksaan awal di halaman ini tidak mencakup akses bersamaan, eksposur publik suatu layanan, maupun izin penyimpanan: hal-hal tersebut memerlukan perancangan tersendiri.

Pertanyaan Anda

Apakah antarmuka ini memesan sewa GPU?

Tidak. Perintah di halaman ini berlaku untuk program dan berkas Anda. Pemilihan sewa dan pemantauannya tetap berada di konfigurator dan akun Kernodeck.

Bisakah saya memanggil program yang sama dari layanan web saya sendiri?

Bisa, jika Anda merancang integrasi dan kontrolnya. Pertahankan kontrak masukan dan keluaran yang jelas, lalu kelola akses, konkurensi, dan kesalahan. Pemeriksaan awal yang diilustrasikan di sini bukan server yang siap diekspos ke publik.

Apakah configuration_validated berarti komputasi saya berhasil?

Tidak. Pesan pada contoh hanya mengonfirmasi pemeriksaan yang ada di dalam kode. GPU, model, data, dan keluaran aplikasi tetap perlu diperiksa saat peluncuran sebenarnya.

Apakah referensi pesanan harus digunakan sebagai ID uji coba?

Sebaiknya simpan dua ID yang saling terkait. Satu sewa yang sama dapat memuat beberapa eksperimen; setiap uji coba harus dapat dibandingkan dan ditemukan secara independen dari folder komersial.