Tujuan repo ini adalah untuk memberikan implementasi sederhana dari model GPT yang dapat digunakan untuk aplikasi produksi. Kode saat ini mendukung kasus penggunaan berikut:
Jangan ragu untuk membayar repo ini dan menggunakannya sebagai templat untuk mengembangkan aplikasi GPT Anda sendiri.
Kami ingin akhirnya termasuk penyetelan chatgpt berbasis RL. Secara umum ini tidak mengubah model pengetahuan yang mendasarinya tetapi membuat interaksi dengan model lebih seperti manusia.
Menyiapkan kode cukup minim dan dapat dengan mudah direproduksi di lingkungan VM lokal atau cloud.*
conda create -n python38 python=3.8
conda activate python38
conda install --file requirements.txt
* Di masa depan kami akan mencoba memberikan versi Docker dari pengaturan ini.
Kami memberikan kode sampel yang mengunduh dan melakukan preprocess di dataset Tiny-Shakespeare untuk pelatihan dan penyempurnaan. Gunakan kode ini sebagai templat untuk membuat pemrosesan data untuk data Anda sendiri.
python src/data_io/fetch_shakespeare.py
Melatih model GPT yang sangat kecil dari awal pada dataset Tiny-Shakespeare yang dibuat pada langkah sebelumnya. Model yang dihasilkan tidak akan sangat digeneralisasikan karena agak kecil dan terlatih pada dataset yang sangat kecil tetapi dapat menghasilkan kutipan seperti Shakespeare.
Ubah file konfigurasi dan untuk melatih model dari awal pada data Anda sendiri. Pada titik ini Anda dapat secara teknis skala ke ukuran model yang sangat besar sesuai dengan ukuran data dan sumber daya Anda.*
python src/training/train_main.py --config_file config/train_shakespeare_small.yml
* Untuk langkah ini Anda mungkin akan membutuhkan satu atau beberapa GPU.
Menyempurnakan model GPT2 open source pada data Anda sendiri. Dimungkinkan untuk menggunakan model seperti GPT open source (GPT2-Medium, GPT2-XL dll). Ini adalah opsi yang lebih umum karena membutuhkan lebih sedikit data dan sumber daya (dimungkinkan untuk menjalankan ini bahkan pada CPU) dan jauh lebih cepat daripada pelatihan dari awal.
python src/training/train_main.py --config_file config/finetune_shakespeare.yml
Contoh sejumlah output dari model terlatih yang diberikan prompt input. Ini dapat digunakan untuk inferensi batch.
python src/inference/sample_main.py --config_file config/sample_shakespeare.yml
Server Lightweigth yang melayani model terlatih dalam API REST.
uvicorn src.inference.service_main:app --reload --reload-include config/sample_gpt2.yml
Setelah server berjalan, Anda dapat meminta titik akhir dengan prompt (sebagai permintaan pos). Untuk detail lebih lanjut tentang spesifik kueri, lihat skrip pengujian berikut.
Setelah server Anda berjalan, Anda dapat menguji titik akhir menggunakan skrip berikut.
python src/inference/test_query.py
Repo ini telah dikerahkan memiliki aplikasi produksi dalam pikiran dan termasuk pengujian unit dan integrasi.
* Tesing bukanlah ATM yang luas tetapi kami akan mencoba meningkatkan cakupan di masa depan.
Tes unit telah dimasukkan untuk mencakup fungsionalitas utama. Anda dapat menjalankan suite pengujian unit lengkap dengan perintah berikut:
pytest test/unit/
Selain tes unit, kami telah menyertakan beberapa tes integrasi untuk pelatihan, fine-tuning dan pengambilan sampel alur kerja.
pytest test/integration/
* Pengujian integrasi saat ini membutuhkan data untuk bekerja (lihat di atas).
Secara umum disarankan untuk memungkinkan kait pra-komit saat bekerja dengan repo. Saat ini menjalankan beberapa pemeriksaan pemformatan dasar dan menjalankan rangkaian pengujian unit (tetapi bukan tes integrasi).
conda install -c conda-forge pre-commit
pre-commit install
Implementasi GPT dalam repo ini terinspirasi oleh repo Nanogpt oleh Andrej Karpathy. Tujuan kami adalah untuk mengimplementasikan kembali, menyusun kembali dan memperluasnya dengan modul yang membuatnya mudah untuk membangun berbagai jenis aplikasi produksi di atasnya.