Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Jupyter에서 Palantir 제공 언어 모델 사용

Jupyter notebook에서 palantir_models의 바인딩으로 대화 완성과 임베딩 모델을 호출할 수 있습니다. 먼저 플랫폼 인스턴스의 AIP 기능을 활성화해야 합니다.

사용할 수 있는 모델은 고객과 환경에 따라 다릅니다. Models 패널에 표시되는 모델과 모델 카탈로그를 확인하고 필요한 접근은 Palantir 담당자에게 문의합니다.

패키지와 모델 가져오기

Packages 패널에서 palantir_models를 검색하고 Latest 또는 필요한 버전을 선택합니다. 생성한 설치 명령을 사용하며 관리형 환경에서는 maestro env 명령으로 의존성을 추가합니다.

Models 패널에서 처음에는 Import a Palantir-provided model을, 이미 모델이 있으면 위쪽 +를 선택합니다. 검색 가능한 목록은 chat completion과 embedding 모델로 나뉩니다.

모델을 가져온 뒤 해당 모델 카드를 선택하면 기본 호출 스니펫이 나옵니다. 스니펫을 복사해 notebook 셀에서 사용할 수 있습니다.

모델 식별자와 바인딩 종류는 선택한 모델에 맞춰야 합니다. 다음 코드의 생성 호출은 실제 모델 추론을 수행합니다.

대화 완성

아래 예제는 OpenAiGptChatLanguageModel과 GptChatCompletionRequest를 사용하는 OpenAI 대화 모델에 해당합니다. 입력 칸에는 선택한 모델의 생성 스니펫에서 get(...)에 전달하는 실제 식별자를 입력합니다.

from language_model_service_api.languagemodelservice_api_completion_v3 import (
    GptChatCompletionRequest,
)
from language_model_service_api.languagemodelservice_api import (
    ChatMessage,
    ChatMessageRole,
)
from palantir_models.models import OpenAiGptChatLanguageModel

model_identifier = input("Models 스니펫의 모델 식별자: ").strip()
if not model_identifier:
    raise ValueError("A model identifier is required")
model = OpenAiGptChatLanguageModel.get(model_identifier)
response = model.create_chat_completion(
    GptChatCompletionRequest([
        ChatMessage(ChatMessageRole.USER, "why is the sky blue?"),
    ])
)
response

다른 모델 계열은 그 모델의 생성 스니펫에 있는 바인딩과 요청 타입을 사용합니다. 설치된 모델 ID와 무관하게 모든 모델을 같은 OpenAI 요청 클래스로 호출하지 않습니다.

단어 임베딩의 2차원 시각화

다음 예제는 Models에서 text-embedding-ada-002를 가져올 수 있는 환경을 전제로 합니다. 과일 14개와 동물 12개의 단어를 임베딩하고 PCA로 두 차원에 투영합니다.

Jupyter 작업공간 터미널에서 의존성을 추가합니다.

maestro env conda install 'palantir_models>=0.1795.0' matplotlib numpy scikit-learn

Models 패널에서 해당 임베딩 모델을 가져옵니다.

다음 블록을 notebook 셀에서 실행하면 실제 임베딩을 요청합니다.

from language_model_service_api.languagemodelservice_api_embeddings_v3 import (
    GenericEmbeddingsRequest,
)
from palantir_models.models import GenericEmbeddingModel

fruits = [
    "apple", "banana", "orange", "melon", "kiwi", "pear", "grape",
    "strawberry", "lemon", "lime", "blueberry", "berry", "mango", "watermelon",
]
animals = [
    "dog", "cat", "cow", "eagle", "mouse", "horse", "squirrel", "lion",
    "deer", "goose", "chicken", "pig",
]
words = fruits + animals
model = GenericEmbeddingModel.get("text-embedding-ada-002")
embeddings = model.create_embeddings(
    GenericEmbeddingsRequest(inputs=words)
).embeddings

다음 셀은 반환한 임베딩을 시각화합니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

pca = PCA(n_components=2, random_state=0)
embeddings_2d = pca.fit_transform(np.asarray(embeddings))

fig, ax = plt.subplots(figsize=(8, 4), dpi=100)
for index, word in enumerate(words):
    x, y = embeddings_2d[index]
    ax.scatter(x, y)
    ax.annotate(
        word, xy=(x, y), xytext=(5, 2), textcoords="offset points",
        ha="right", va="bottom",
    )
ax.set_xlabel("PCA component 1")
ax.set_ylabel("PCA component 2")
plt.show()
plt.close(fig)

두 축은 PCA 성분이며 과일/동물 분류 확률이 아닙니다. 차원을 줄인 그림에서의 거리를 원래 임베딩 공간의 모든 거리와 동일하게 해석하지 않습니다.

모델 응답과 그림은 사용한 모델 및 실행 환경에 따라 달라질 수 있습니다. 이 임베딩 생성 경로와, 모델 산출물의 어댑터를 학습하여 게시하는 사용자 모델 개발은 구분합니다.