본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

Palantir에서 제공하는 언어 모델을 변환에 사용하기

:::callout{제목=사전 요구 사항 theme=neutral} Palantir에서 제공하는 언어 모델을 사용하려면, AIP를 등록 시 먼저 활성화해야 합니다. :::

Palantir은 Python 변환에서 사용할 수 있는 언어 및 임베딩 모델 세트를 제공합니다. 이러한 모델은 palantir_models 라이브러리를 통해 사용할 수 있습니다. 이 라이브러리는 transforms.api.transform 데코레이터와 함께 사용할 수 있는 FoundryInputParams 세트를 제공합니다.

레포지토리 설정

언어 모델 지원을 변환에 추가하려면, Code Repositories 왼쪽에 있는 라이브러리 검색 패널을 엽니다. palantir_models를 검색한 다음, Library 탭에서 라이브러리 추가 및 설치를 선택합니다.

Code Repositories에서 모든 종속성을 해결하고 다시 검사를 실행합니다. 검사가 완료되는 데 시간이 걸릴 수 있으며, 그 후에 라이브러리를 변환에서 사용할 수 있습니다.

변환 설정

:::callout{제목=사전 요구 사항 theme=neutral} palantir_model 클래스는 transforms.api.transform 데코레이터와만 함께 사용할 수 있습니다. :::

이 예에서는 palantir_models.transforms.OpenAiGptChatLanguageModelInput을 사용합니다. 먼저, OpenAiGptChatLanguageModelInput을 파이썬 파일에 가져옵니다. 이 클래스를 사용하여 변환을 생성할 수 있습니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 라이브러리 임포트 from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel # 변환(transform) 함수 정의 @transform( # 입력 데이터셋 경로 설정 source_df=Input("/path/to/input/dataset"), # 사용할 언어 모델 설정 (여기서는 GPT-4 사용) model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4_azure"), # 출력 데이터셋 경로 설정 output=Output("/path/to/output/dataset"), ) def compute_generic(ctx, source_df, model: OpenAiGptChatLanguageModel, output): # 함수 내용 작성 ...

리소스 식별자를 입력하면 자동으로 드롭다운 메뉴가 표시되어 사용 가능한 모델을 나타냅니다. 드롭다운에서 원하는 옵션을 선택할 수 있습니다.

사용자의 입력인 "ri."에 이어 선택 가능한 LLMs를 보여주는 드롭다운 메뉴

언어 모델 사용하여 완성문 생성하기

이 예제에서는 입력 데이터셋의 각 리뷰에 대한 감정을 판단하기 위해 언어 모델을 사용합니다. OpenAiGptChatLanguageModelInput은 런타임에서 변환기에 OpenAiGptChatLanguageModel을 제공하여 리뷰에 대한 완성문을 생성하는 데 사용할 수 있습니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 필요한 라이브러리와 모듈을 임포트합니다. from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel from language_model_service_api.languagemodelservice_api_completion_v3 import GptChatCompletionRequest from language_model_service_api.languagemodelservice_api import ChatMessage, ChatMessageRole @transform( reviews=Input("/path/to/reviews/dataset"), # 리뷰 데이터셋의 경로를 지정합니다. model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4_azure"), # 사용할 언어 모델을 지정합니다. output=Output("/output/path"), # 출력 결과물의 경로를 지정합니다. ) def compute_sentiment(ctx, reviews, model: OpenAiGptChatLanguageModel, output): # 감정 분석을 수행하는 함수를 정의합니다. def get_completions(review_content: str) -> str: # 감정 분석을 위한 함수를 정의합니다. system_prompt = "Take the following review determine the sentiment of the review" # 시스템의 프롬프트 메시지를 설정합니다. request = GptChatCompletionRequest( # 채팅 완성 요청을 생성합니다. [ChatMessage(ChatMessageRole.SYSTEM, system_prompt), ChatMessage(ChatMessageRole.USER, review_content)] ) resp = model.create_chat_completion(request) # 채팅 완성 요청에 대한 응답을 받습니다. return resp.choices[0].message.content # 응답 결과 중 첫 번째 메시지의 내용을 반환합니다. reviews_df = reviews.pandas() # 리뷰 데이터셋을 pandas 데이터프레임으로 변환합니다. reviews_df['sentiment'] = reviews_df['review_content'].apply(get_completions) # 각 리뷰에 대해 감정 분석을 수행하고 결과를 'sentiment' 열에 저장합니다. out_df = ctx.spark_session.createDataFrame(reviews_df) # pandas 데이터프레임을 스파크 데이터프레임으로 변환합니다. return output.write_dataframe(out_df) # 결과 데이터프레임을 지정한 경로에 저장합니다.

임베딩

생성 언어 모델과 함께, Palantir은 임베딩 모델도 제공합니다. 다음 예시는 palantir_models.transforms.GenericEmbeddingModelInput을 사용하여 동일한 reviews 데이터셋에 대한 임베딩을 계산하는 방법을 보여줍니다. GenericEmbeddingModelInput은 런타임에 변환에 GenericEmbeddingModel을 제공하여 각 리뷰에 대한 임베딩을 계산하는 데 사용할 수 있습니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # 필요한 라이브러리들을 임포트합니다. from transforms.api import transform, Input, Output from language_model_service_api.languagemodelservice_api_embeddings_v3 import GenericEmbeddingsRequest from palantir_models.models import GenericEmbeddingModel from palantir_models.transforms import GenericEmbeddingModelInput # 'compute_embeddings'라는 이름의 transform 함수를 정의합니다. # 이 함수는 리뷰 데이터셋을 입력으로 받아 임베딩 모델을 통해 각 리뷰의 임베딩을 계산하고, 그 결과를 출력합니다. @transform( reviews=Input("/path/to/reviews/dataset"), # 리뷰 데이터셋의 경로를 입력으로 받습니다. embedding_model=GenericEmbeddingModelInput("ri.language-model-service..language-model.text-embedding-ada-002_azure"), # 사용할 임베딩 모델을 입력으로 받습니다. output=Output("/path/to/embedding/output") # 임베딩 결과를 저장할 경로를 출력으로 정의합니다. ) def compute_embeddings(ctx, reviews, embedding_model: GenericEmbeddingModel, output): # 내부 함수 'internal_create_embeddings'를 정의합니다. 이 함수는 문자열 값을 입력으로 받아 해당 문자열의 임베딩을 생성하고 반환합니다. def internal_create_embeddings(val: str): return embedding_model.create_embeddings(GenericEmbeddingsRequest(inputs=[val])).embeddings # 리뷰 데이터를 판다스 데이터프레임으로 변환합니다. reviews_df = reviews.pandas() # 'review_content' 열의 각 값에 대해 'internal_create_embeddings' 함수를 적용하여 임베딩을 생성하고, 그 결과를 'embedding' 열에 저장합니다. reviews_df['embedding'] = reviews_df['review_content'].apply(internal_create_embeddings) # 판다스 데이터프레임을 스파크 데이터프레임으로 변환합니다. out_df = ctx.spark_session.createDataFrame(reviews_df) # 임베딩 결과를 출력 경로에 쓰기 위해 스파크 데이터프레임을 반환합니다. return output.write_dataframe(out_df)