
기계 학습을위한 "스위스 군대 나이프"
ktrain.text.qa.generative_qa 모듈을 제거합니다. OnPrem.llm 패키지는 생성 질문 응답 작업에 사용해야합니다. 예제 노트북을 참조하십시오.Ktrain 은 딥 러닝 라이브러리 인 Tensorflow Keras (및 기타 라이브러리)의 경량 래퍼로 신경망 및 기타 기계 학습 모델을 구축, 훈련 및 배포하는 데 도움이됩니다. Fastai 및 Ludwig 와 같은 ML 프레임 워크 확장에서 영감을 얻은 Ktrain은 딥 러닝 및 AI를보다 신규 이민자와 숙련 된 실무자 모두에게보다 쉽게 접근 할 수 있고 쉽게 신청할 수 있도록 설계되었습니다. 몇 줄의 코드만으로 Ktrain은 쉽고 빠르게 다음을 수행 할 수 있습니다.
text , vision , graph 및 tabular 데이터에 대해 빠르고 정확하며 사용하기 쉬운 사전 처리 된 모델을 사용합니다.
text 데이터 :vision 데이터 :graph 데이터 :tabular 데이터 :학습 속도 파인더를 사용하여 데이터가 주어진 모델에 대한 최적의 학습 속도를 추정하십시오.
삼각 정책, 1 사이클 정책 및 SGDR과 같은 학습 속도 일정을 활용하여 손실을 효과적으로 최소화하고 일반화를 향상시킵니다.
모든 언어에 대한 텍스트 분류기 구축 (예 : Bert를 사용한 아랍어 감정 분석, NBSVM을 통한 중국 정서 분석)
모든 언어에 대한 NER 모델을 쉽게 훈련시킵니다 (예 : 네덜란드 NER)
다양한 형식의로드 및 전처리 텍스트 및 이미지 데이터
분류 된 데이터 포인트를 검사하고 모델 개선에 도움이되는 설명을 제공합니다.
새로운 원시 데이터에 대한 예측을하기위한 모델 및 데이터 포장 단계를 저장하고 배포하기위한 간단한 예측 API를 활용하십시오.
Onnx 및 Tensorflow Lite로 모델을 내보내기위한 내장 지원 (자세한 내용은 노트북 참조)
프로젝트에서 Ktrain을 사용하는 방법에 대한 안내서는 다음 자습서 노트를 참조하십시오.
Ktrain 에 대한 일부 블로그 튜토리얼 및 기타 가이드는 다음과 같습니다.
Ktrain : 신경망을 훈련시키는 데 도움이되는 Keras의 경량 래퍼
3 줄의 코드로 Bert 텍스트 분류
Tensorflow 2의 포옹 얼굴 변압기와 함께 텍스트 분류 (눈물없이)
3 줄의 코드로 Bert를 사용하여 오픈 도메인 질문 응답 시스템 구축
Hamiz Ahmed의 재난 트윗 분류를 위해 Ktrain을 사용한 Bert Finetuning Bert
Sandy Khosasi의 Ktrain과 함께 인도네시아 NLP 사례
Google Colab 에서 Ktrain 사용? 이 colab 예제를 참조하십시오.
transformer 단어 임베딩을 사용한 NER 예제텍스트 분류 및 이미지 분류와 같은 작업은 몇 줄의 코드만으로 쉽게 달성 할 수 있습니다.
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 ()) PIP가 최신 상태인지 확인하십시오 : pip install -U pip
TensorFlow 2가 아직 설치되지 않은 경우 설치하십시오 (예 : pip install tensorflow ).
KTRAIN : pip install ktrain
tensorflow>=2.16 :
pip install tf_kerasTF_USE_LEGACY_KERAS true로 설정하십시오.위의 일은 Linux 시스템 및 Google Colab 및 AWS EC2와 같은 클라우드 컴퓨팅 환경에 필요한 전부입니다. Windows 컴퓨터 에서 ktrain을 사용하는 경우 추가 단계가 포함 된보다 자세한 지침을 따를 수 있습니다.
tensorflow>=2.11 기간 동안 tf.keras.optimizers.legacy.Adam 과 같은 레거시 최적화기 만 사용해야합니다. 최신 tf.keras.optimizers.Optimizer BASE 클래스는 현재 지원되지 않습니다. 예를 들어, TensorFlow 2.11 이상을 사용할 때는 model.compile 의 문자열 "adam" 대신 tf.keras.optimzers.legacy.Adam() 사용하십시오. KTRAIN은 기본적인 모델 (예 : transformers 라이브러리의 모델)을 사용할 때이를 자동으로 수행합니다.tf_keras 패키지 .bashrc 설치하고 KTRAIN을 가져 오기 전에 환경 변수 TF_USE_LEGACY_KERAS=True export TF_USE_LEGACY_KERAS=1 os.environ['TF_USE_LEGACY_KERAS']="1" 합니다. eli5 및 stellargraph 라이브러리를 사용하고 있음을 주목하십시오.) # 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은 의도적으로 더 낮은 버전의 트랜스포머 로 핀을 사용하여 구형 버전의 텐서 플로우에 대한 지원을 포함합니다. 최신 버전의 transformers 필요한 경우 일반적으로 Ktrain을 설치 한 후 수행하는 한 transformers 업그레이드하는 것이 안전합니다.
V0.30.x 기준으로, Tensorflow 설치는 선택 사항이며 신경망을 교육하는 경우에만 필요합니다. Ktrain은 신경망 훈련을 위해 텐서 플로를 사용하지만,이 표에 요약 된대로 텐서 플로를 설치 하지 않고도 상자 외에 사용할 수있는 다양한 유용한 사전에 사기꾼 모델 및 스키어 모델이 포함되어 있습니다.
| 특징 | 텐서 플로 | Pytorch | 스카리 |
|---|---|---|---|
| 신경망 교육 (예 : 텍스트 또는 이미지 분류) | ✅ | ||
| 엔드 투 엔드 질문 응답 (사전 사전) | ✅ | ✅ | |
| QA 기반 정보 추출 (사기) | ✅ | ✅ | |
| 제로 샷 분류 (사전에 사전) | ✅ | ||
| 언어 번역 (사전 해당) | ✅ | ||
| 요약 (사전 해당) | ✅ | ||
| 음성 전사 (사전에 사전) | ✅ | ||
| 이미지 캡션 (사전 사전) | ✅ | ||
| 물체 감지 (사전에 사전) | ✅ | ||
| 감정 분석 (사전 해제) | ✅ | ||
| Generativeai (문장 변환 자) | ✅ | ||
| 주제 모델링 (Sklearn) | ✅ | ||
| Keyphrase 추출 (TextBlob/nltk/sklearn) | ✅ |
위에서 언급 한 바와 같이, KTRAIN 의 엔드 투 엔드 질문 응답 및 정보 추출은 텐서 플로우 ( framework='tf' ) 또는 pytorch ( framework='pt' )와 함께 사용할 수 있습니다.
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},
}
제작자 : Arun S. Maiya
이메일 : Arun [at] Maiya [dot] net