Scikit-LLM을 사용하여 LLM을 Scikit-learn 워크플로에 쉽게 통합하세요 - KDnuggets

Scikit-LLM을 사용하여 LLM을 Scikit-learn 워크플로에 쉽게 통합 – KDnuggets

소스 노드 : 3030440

Scikit-LLM을 사용하여 Scikit-learn 워크플로에 LLM을 쉽게 통합하세요.
DALL-E 2에서 생성된 이미지
 

요구 사항이 항상 존재하기 때문에 텍스트 분석 작업이 한동안 진행되어 왔습니다. 연구는 간단한 설명 통계부터 텍스트 분류 및 고급 텍스트 생성에 이르기까지 많은 발전을 이루었습니다. 우리 무기고에 대규모 언어 모델이 추가되면서 우리의 작업에 대한 접근이 훨씬 더 쉬워졌습니다.

Scikit-LLM은 LLM의 강력한 텍스트 분석 활동을 위해 개발된 Python 패키지입니다. 이 패키지는 표준 Scikit-Learn 파이프라인을 Scikit-LLM과 통합할 수 있다는 점에서 두드러졌습니다.

그렇다면 이 패키지는 무엇에 관한 것이며 어떻게 작동합니까? 그것에 들어가 보자.

사이킷-LLM LLM을 통해 텍스트 데이터 분석 작업을 향상시키는 Python 패키지입니다. 에 의해 개발되었습니다. 비츠바이트 표준 Scikit-Learn 라이브러리와 언어 모델의 기능을 연결하는 데 도움이 됩니다. Scikit-LLM은 SKlearn 라이브러리와 유사하게 API를 만들었으므로 사용하는 데 큰 문제가 없습니다.

설치

패키지를 사용하려면 패키지를 설치해야 합니다. 그렇게 하려면 다음 코드를 사용할 수 있습니다.

pip install scikit-llm

 

이 기사가 작성된 시점에서 Scikit-LLM은 일부 OpenAI 및 GPT4ALL 모델과만 호환됩니다. 이것이 바로 우리가 OpenAI 모델로만 작업하려는 이유입니다. 그러나 처음에 구성 요소를 설치하면 GPT4ALL 모델을 사용할 수 있습니다.

pip install scikit-llm[gpt4all]

 

설치 후 LLM 모델에 액세스하려면 OpenAI 키를 설정해야 합니다.

from skllm.config import SKLLMConfig

SKLLMConfig.set_openai_key("")
SKLLMConfig.set_openai_org("")

Scikit-LLM 사용해 보기

환경 세트를 사용하여 일부 Scikit-LLM 기능을 시험해 보겠습니다. LLM이 가진 능력 중 하나는 재교육 없이 텍스트 분류를 수행하는 것인데, 이를 Zero-Shot이라고 합니다. 그러나 처음에는 샘플 데이터를 사용하여 Few-Shot 텍스트 분류를 시도했습니다.

from skllm import ZeroShotGPTClassifier
from skllm.datasets import get_classification_dataset


#label: Positive, Neutral, Negative
X, y = get_classification_dataset()


#Initiate the model with GPT-3.5
clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
clf.fit(X, y)
labels = clf.predict(X)

 

X 변수 내의 텍스트 데이터와 데이터 세트의 레이블 y만 제공하면 됩니다. 이 경우 레이블은 긍정적, 중립 또는 부정적 감정으로 구성됩니다. 

보시다시피 프로세스는 Scikit-Learn 패키지의 피팅 방법을 사용하는 것과 유사합니다. 그러나 우리는 Zero-Shot이 훈련을 위해 데이터 세트가 반드시 필요한 것은 아니라는 것을 이미 알고 있습니다. 이것이 바로 훈련 데이터 없이 라벨을 제공할 수 있는 이유입니다.

X, _ = get_classification_dataset()

clf = ZeroShotGPTClassifier()
clf.fit(None, ["positive", "negative", "neutral"])
labels = clf.predict(X)

 

이는 다음 코드에서 볼 수 있는 다중 레이블 분류 사례에서도 확장될 수 있습니다.

from skllm import MultiLabelZeroShotGPTClassifier
from skllm.datasets import get_multilabel_classification_dataset
X, _ = get_multilabel_classification_dataset()
candidate_labels = [
    "Quality",
    "Price",
    "Delivery",
    "Service",
    "Product Variety",
    "Customer Support",
    "Packaging",,
]
clf = MultiLabelZeroShotGPTClassifier(max_labels=4)
clf.fit(None, [candidate_labels])
labels = clf.predict(X)

Scikit-LLM의 놀라운 점은 사용자가 LLM의 기능을 일반적인 Scikit-Learn 파이프라인으로 확장할 수 있다는 것입니다. 

ML 파이프라인의 Scikit-LLM

다음 예에서는 Scikit-LLM을 벡터화기로 시작하고 XGBoost를 모델 분류자로 사용하는 방법을 보여 드리겠습니다. 또한 단계를 모델 파이프라인으로 래핑합니다.

먼저 데이터를 로드하고 레이블 인코더를 시작하여 레이블 데이터를 숫자 값으로 변환합니다.

from sklearn.preprocessing import LabelEncoder

X, y = get_classification_dataset()

le = LabelEncoder()
y_train_enc = le.fit_transform(y_train)
y_test_enc = le.transform(y_test)

 

다음으로 벡터화 및 모델 피팅을 수행하는 파이프라인을 정의합니다. 다음 코드를 사용하면 그렇게 할 수 있습니다.

from sklearn.pipeline import Pipeline
from xgboost import XGBClassifier
from skllm.preprocessing import GPTVectorizer

steps = [("GPT", GPTVectorizer()), ("Clf", XGBClassifier())]
clf = Pipeline(steps)

#Fitting the dataset
clf.fit(X_train, y_train_enc)

 

마지막으로 다음 코드를 사용하여 예측을 수행할 수 있습니다.

pred_enc = clf.predict(X_test)
preds = le.inverse_transform(pred_enc)

 

보시다시피 Scikit-Learn 파이프라인에서 Scikit-LLM 및 XGBoost를 사용할 수 있습니다. 필요한 모든 패키지를 결합하면 예측이 더욱 강력해집니다.

모델 미세 조정을 포함하여 Scikit-LLM으로 수행할 수 있는 다양한 작업이 여전히 있습니다. 자세한 내용은 문서를 확인하는 것이 좋습니다. 다음의 오픈 소스 모델을 사용할 수도 있습니다. GPT4ALL 필요하다면.

Scikit-LLM은 LLM을 통해 Scikit-Learn 텍스트 데이터 분석 작업을 지원하는 Python 패키지입니다. 이 기사에서는 텍스트 분류를 위해 Scikit-LLM을 사용하고 이를 기계 학습 파이프라인에 결합하는 방법에 대해 논의했습니다.
 
 

코넬리우스 유다 위자야 데이터 과학 보조 관리자 및 데이터 작성자입니다. Allianz Indonesia에서 풀타임으로 일하는 동안 그는 소셜 미디어와 글쓰기 미디어를 통해 Python 및 데이터 팁을 공유하는 것을 좋아합니다.

타임 스탬프 :

더보기 너 겟츠