
"Pisau Angkatan Darat Swiss" untuk Pembelajaran Mesin
ktrain.text.qa.generative_qa . Paket Onprem.llm kami harus digunakan untuk tugas-tugas yang dijawab dengan pertanyaan generatif. Lihat contoh notebook.Ktrain adalah pembungkus ringan untuk perpustakaan pembelajaran dalam Tensorflow keras (dan perpustakaan lainnya) untuk membantu membangun, melatih, dan menggunakan jaringan saraf dan model pembelajaran mesin lainnya. Terinspirasi oleh ekstensi kerangka kerja ML seperti Fastai dan Ludwig , Ktrain dirancang untuk membuat pembelajaran yang mendalam dan AI lebih mudah diakses dan lebih mudah diajukan untuk pendatang baru dan praktisi yang berpengalaman. Dengan hanya beberapa baris kode, Ktrain memungkinkan Anda untuk dengan mudah dan cepat:
Mempekerjakan model yang cepat, akurat, dan mudah digunakan untuk text , vision , graph , dan data tabular :
text :vision :graph :tabular :Perkirakan tingkat pembelajaran yang optimal untuk model Anda mengingat data Anda menggunakan pencari tingkat pembelajaran
Memanfaatkan jadwal tingkat pembelajaran seperti kebijakan segitiga, kebijakan 1 siklus, dan SGDR untuk secara efektif meminimalkan kerugian dan meningkatkan generalisasi
Bangun pengklasifikasi teks untuk bahasa apa pun (misalnya, analisis sentimen Arab dengan Bert, analisis sentimen Cina dengan NBSVM)
Mudah melatih model NER untuk bahasa apa pun (misalnya, Dutch Ner)
memuat dan memroses data teks dan gambar dari berbagai format
Periksa poin data yang salah diklasifikasikan dan memberikan penjelasan untuk membantu meningkatkan model Anda
Leverage API Prediksi Sederhana untuk Menyimpan dan Menyebarkan Kedua Model dan Langkah-Langkah Preproses Data untuk membuat prediksi pada data mentah baru
Dukungan bawaan untuk mengekspor model ke ONNX dan TensorFlow Lite (lihat contoh notebook untuk informasi lebih lanjut)
Silakan lihat buku catatan tutorial berikut untuk panduan tentang cara menggunakan ktrain pada proyek Anda:
Beberapa tutorial blog dan panduan lain tentang KTain ditampilkan di bawah ini:
KTRAIN: Pembungkus ringan untuk Keras untuk membantu melatih jaringan saraf
Klasifikasi Teks Bert dalam 3 baris kode
Klasifikasi Teks dengan Transformer Wajah Memeluk di TensorFlow 2 (tanpa air mata)
Bangun sistem jawaban tanya domain terbuka dengan Bert dalam 3 baris kode
Finetuning Bert Menggunakan Ktrain Untuk Klasifikasi Tweet Bencana oleh Hamiz Ahmed
Contoh NLP Indonesia dengan Ktrain oleh Sandy Khosasi
Menggunakan Ktrain di Google Colab ? Lihat contoh Colab ini:
transformer Word EmbeddingsTugas seperti klasifikasi teks dan klasifikasi gambar dapat dilakukan dengan mudah dengan hanya beberapa baris kode.
import ktrain
from ktrain import text as txt
# load data
( x_train , y_train ), ( x_test , y_test ), preproc = txt . texts_from_folder ( 'data/aclImdb' , maxlen = 500 ,
preprocess_mode = 'bert' ,
train_test_names = [ 'train' , 'test' ],
classes = [ 'pos' , 'neg' ])
# load model
model = txt . text_classifier ( 'bert' , ( x_train , y_train ), preproc = preproc )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model ,
train_data = ( x_train , y_train ),
val_data = ( x_test , y_test ),
batch_size = 6 )
# find good learning rate
learner . lr_find () # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using 1cycle learning rate schedule for 3 epochs
learner . fit_onecycle ( 2e-5 , 3 ) import ktrain
from ktrain import vision as vis
# load data
( train_data , val_data , preproc ) = vis . images_from_folder (
datadir = 'data/dogscats' ,
data_aug = vis . get_data_aug ( horizontal_flip = True ),
train_test_names = [ 'train' , 'valid' ],
target_size = ( 224 , 224 ), color_mode = 'rgb' )
# load model
model = vis . image_classifier ( 'pretrained_resnet50' , train_data , val_data , freeze_layers = 80 )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model = model , train_data = train_data , val_data = val_data ,
workers = 8 , use_multiprocessing = False , batch_size = 64 )
# find good learning rate
learner . lr_find () # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using triangular policy with ModelCheckpoint and implicit ReduceLROnPlateau and EarlyStopping
learner . autofit ( 1e-4 , checkpoint_folder = '/tmp/saved_weights' ) import ktrain
from ktrain import text as txt
# load data
( trn , val , preproc ) = txt . entities_from_txt ( 'data/ner_dataset.csv' ,
sentence_column = 'Sentence #' ,
word_column = 'Word' ,
tag_column = 'Tag' ,
data_format = 'gmb' ,
use_char = True ) # enable character embeddings
# load model
model = txt . sequence_tagger ( 'bilstm-crf' , preproc )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model , train_data = trn , val_data = val )
# conventional training for 1 epoch using a learning rate of 0.001 (Keras default for Adam optmizer)
learner . fit ( 1e-3 , 1 ) import ktrain
from ktrain import graph as gr
# load data with supervision ratio of 10%
( trn , val , preproc ) = gr . graph_nodes_from_csv (
'cora.content' , # node attributes/labels
'cora.cites' , # edge list
sample_size = 20 ,
holdout_pct = None ,
holdout_for_inductive = False ,
train_pct = 0.1 , sep = ' t ' )
# load model
model = gr . graph_node_classifier ( 'graphsage' , trn )
# wrap model and data in ktrain.Learner object
learner = ktrain . get_learner ( model , train_data = trn , val_data = val , batch_size = 64 )
# find good learning rate
learner . lr_find ( max_epochs = 100 ) # briefly simulate training to find good learning rate
learner . lr_plot () # visually identify best learning rate
# train using triangular policy with ModelCheckpoint and implicit ReduceLROnPlateau and EarlyStopping
learner . autofit ( 0.01 , checkpoint_folder = '/tmp/saved_weights' ) # load text data
categories = [ 'alt.atheism' , 'soc.religion.christian' , 'comp.graphics' , 'sci.med' ]
from sklearn . datasets import fetch_20newsgroups
train_b = fetch_20newsgroups ( subset = 'train' , categories = categories , shuffle = True )
test_b = fetch_20newsgroups ( subset = 'test' , categories = categories , shuffle = True )
( x_train , y_train ) = ( train_b . data , train_b . target )
( x_test , y_test ) = ( test_b . data , test_b . target )
# build, train, and validate model (Transformer is wrapper around transformers library)
import ktrain
from ktrain import text
MODEL_NAME = 'distilbert-base-uncased'
t = text . Transformer ( MODEL_NAME , maxlen = 500 , class_names = train_b . target_names )
trn = t . preprocess_train ( x_train , y_train )
val = t . preprocess_test ( x_test , y_test )
model = t . get_classifier ()
learner = ktrain . get_learner ( model , train_data = trn , val_data = val , batch_size = 6 )
learner . fit_onecycle ( 5e-5 , 4 )
learner . validate ( class_names = t . get_classes ()) # class_names must be string values
# Output from learner.validate()
# precision recall f1-score support
#
# alt.atheism 0.92 0.93 0.93 319
# comp.graphics 0.97 0.97 0.97 389
# sci.med 0.97 0.95 0.96 396
#soc.religion.christian 0.96 0.96 0.96 398
#
# accuracy 0.96 1502
# macro avg 0.95 0.96 0.95 1502
# weighted avg 0.96 0.96 0.96 1502 import ktrain
from ktrain import tabular
import pandas as pd
train_df = pd . read_csv ( 'train.csv' , index_col = 0 )
train_df = train_df . drop ([ 'Name' , 'Ticket' , 'Cabin' ], 1 )
trn , val , preproc = tabular . tabular_from_df ( train_df , label_columns = [ 'Survived' ], random_state = 42 )
learner = ktrain . get_learner ( tabular . tabular_classifier ( 'mlp' , trn ), train_data = trn , val_data = val )
learner . lr_find ( show_plot = True , max_epochs = 5 ) # estimate learning rate
learner . fit_onecycle ( 5e-3 , 10 )
# evaluate held-out labeled test set
tst = preproc . preprocess_test ( pd . read_csv ( 'heldout.csv' , index_col = 0 ))
learner . evaluate ( tst , class_names = preproc . get_classes ()) Pastikan Pip up-to-date dengan: pip install -U pip
Pasang TensorFlow 2 jika belum diinstal (misalnya, pip install tensorflow ).
Instal Ktrain : pip install ktrain
Jika menggunakan tensorflow>=2.16 :
pip install tf_kerasTF_USE_LEGACY_KERAS ke true sebelum mengimpor ktrainDi atas haruslah yang Anda butuhkan di sistem Linux dan lingkungan komputasi awan seperti Google Colab dan AWS EC2. Jika Anda menggunakan Ktrain pada komputer Windows , Anda dapat mengikuti instruksi yang lebih rinci ini yang menyertakan beberapa langkah tambahan.
tensorflow>=2.11 , Anda hanya harus menggunakan pengoptimal lama seperti tf.keras.optimizers.legacy.Adam . tf.keras.optimizers.Optimizer kelas dasar yang lebih baru tidak didukung saat ini. Misalnya, saat menggunakan TensorFlow 2.11 dan di atas, silakan gunakan tf.keras.optimzers.legacy.Adam() alih -alih string "adam" di model.compile . Ktrain melakukan ini secara otomatis saat menggunakan model out-of-the-box (misalnya, model dari perpustakaan transformers )..bashrc atas, karena perubahan perubahan pada TensorFlow 2.16, Anda perlu menginstal paket tf_keras dan juga mengatur variabel lingkungan export TF_USE_LEGACY_KERAS=1 TF_USE_LEGACY_KERAS=True os.environ['TF_USE_LEGACY_KERAS']="1" mengimpor KTRAIN (mis. eli5 dan stellargraph untuk mendukung TensorFlow2.) # for graph module:
pip install https : // github . com / amaiya / stellargraph / archive / refs / heads / no_tf_dep_082 . zip
# for text.TextPredictor.explain and vision.ImagePredictor.explain:
pip install https : // github . com / amaiya / eli5 - tf / archive / refs / heads / master . zip
# for tabular.TabularPredictor.explain:
pip install shap
# for text.zsl (ZeroShotClassifier), text.summarization, text.translation, text.speech:
pip install torch
# for text.speech:
pip install librosa
# for tabular.causal_inference_model:
pip install causalnlp
# for text.summarization.core.LexRankSummarizer:
pip install sumy
# for text.kw.KeywordExtractor
pip install textblob
# for text.generative_ai
pip install onprem Ktrain dengan sengaja pin ke versi Transformers yang lebih rendah untuk memasukkan dukungan untuk versi yang lebih lama dari TensorFlow. Jika Anda membutuhkan versi transformers yang lebih baru, biasanya aman bagi Anda untuk meningkatkan transformers , selama Anda melakukannya setelah menginstal Ktrain .
Pada v0.30.x, instalasi TensorFlow adalah opsional dan hanya diperlukan jika melatih jaringan saraf. Meskipun Ktrain menggunakan TensorFlow untuk pelatihan jaringan saraf, ini juga mencakup berbagai model pytorch pretrained yang berguna dan model sklearn, yang dapat digunakan di luar kotak tanpa menginstal tensorflow, sebagaimana dirangkum dalam tabel ini:
| Fitur | Tensorflow | Pytorch | Sklearn |
|---|---|---|---|
| melatih jaringan saraf apa pun (misalnya, klasifikasi teks atau gambar) | ✅ | ||
| End-to-end end-walmer (pretrained) | ✅ | ✅ | |
| Ekstraksi Informasi Berbasis QA (pretrained) | ✅ | ✅ | |
| Klasifikasi Zero-Shot (pretrained) | ✅ | ||
| Terjemahan bahasa (pretrained) | ✅ | ||
| Peringkasan (pretrained) | ✅ | ||
| Transkripsi wicara (pretrained) | ✅ | ||
| Captioning gambar (pretrained) | ✅ | ||
| Deteksi Objek (Pretrained) | ✅ | ||
| Analisis sentimen (pretrained) | ✅ | ||
| Generativeai (kalimat-transformer) | ✅ | ||
| Topic Modeling (SKLEARN) | ✅ | ||
| Ekstraksi keyphrase (TextBlob/NLTK/SKLEARN) | ✅ |
Seperti disebutkan di atas, pertanyaan-jawaban ujung ke ujung dan ekstraksi informasi dalam ktrain dapat digunakan dengan tensorflow (menggunakan framework='tf' ) atau pytorch (menggunakan framework='pt' ).
Harap kutip kertas berikut saat menggunakan KTRAIN :
@article{maiya2020ktrain,
title={ktrain: A Low-Code Library for Augmented Machine Learning},
author={Arun S. Maiya},
year={2020},
eprint={2004.10703},
archivePrefix={arXiv},
primaryClass={cs.LG},
journal={arXiv preprint arXiv:2004.10703},
}
Pencipta: Arun S. Maiya
Email: Arun [at] maiya [dot] net