Use LLM 노드의 프롬프트, 캐시와 실행 비용
Use LLM 노드는 입력 데이터의 열을 LLM에 전달하고 결과 열을 생성합니다. 변환 경로 사이에 넣어 분류, 요약과 정보 추출 등을 수행할 수 있습니다. 플랫폼 관리자가 custom workflow용 AIP 기능 권한을 부여해야 합니다.
데이터셋 노드를 선택하고 Use LLM을 누릅니다.
모델 선택
Palantir가 제공하는 지원 모델 또는 등록된 모델을 선택합니다. Data Connection의 REST API 소스나 compute module로 연결한 모델은 선택기의 Registered 탭에서 찾을 수 있습니다.
Fallback 모델의 우선순위 목록도 지정할 수 있습니다. 주 모델에서 재시도 불가능한 오류가 발생하면 다음 모델들을 순서대로 시도하며 전환 사실을 debug 메시지로 알립니다.
프롬프트 템플릿
기본 템플릿을 선택하거나 Empty prompt로 직접 작성합니다.
분류
Classification은 텍스트를 범주에 배정합니다. 가상 음식점 리뷰 예시에서는 다음 값을 지정합니다.
| 필드 | 값과 의미 |
|---|---|
| Multiplicity | 범주 하나, 여러 개 또는 정확히 정한 수를 선택합니다. 예시는 One or more categories로 관련된 범주를 모두 허용합니다. |
| Context | 데이터의 설명입니다. 예시는 Restaurant Review입니다. |
| Categories | Food, Service, Atmosphere를 지정합니다. |
| Column to classify | 리뷰를 담은 review 열을 선택합니다. |
요약
Summarization은 정한 길이로 내용을 요약합니다. Summarization size에 크기를 쓰고 단위를 단어, 문장 또는 문단으로 선택합니다. 예를 들어 1과 Sentences를 선택하면 한 문장 요약을 요청합니다.
번역
Translation의 Language에 번역할 언어를 지정합니다. 예시는 음식점 리뷰를 스페인어로 옮기기 위해 Spanish를 사용합니다.
감정 분석
Sentiment analysis는 긍정 또는 부정 정도를 숫자 점수로 표현합니다. 예시에서는 0~5 범위를 정하고 0을 가장 부정적, 5를 가장 긍정적인 리뷰로 해석합니다.
개체 추출
Entity extraction은 텍스트에서 지정한 요소를 추출합니다. Entities to extract에 다음과 같이 이름과 유형을 정의할 수 있습니다.
| Entity name | Type | 추출할 내용 |
|---|---|---|
| food | Array의 String 요소 | 리뷰에서 언급한 음식들입니다. |
| service | String | 서비스 품질 설명입니다. |
| number visited | Integer | 작성자가 방문한 횟수입니다. |
프롬프트 화면의 Output type에서도 struct 안의 개체 유형을 조정할 수 있습니다.
직접 작성
기본 유형으로 표현하기 어려우면 Empty prompt에서 입력과 지시문을 구성합니다.
이미지 입력
모델 선택기의 Capability에 Vision이 표시된 모델은 이미지 분석과 시각적 질문에 사용할 수 있습니다.
Empty prompt의 Provide input data에 미디어 참조 열을 지정합니다.
미디어 집합 전체를 노드의 직접 입력으로 전달하지는 못합니다. Convert Media Set to Table Rows로 표를 만들고 그 결과의 mediaReference 열을 Use LLM에 제공합니다. 미디어 참조를 포함한 표 입력과 미디어 집합 자산 자체를 구분합니다.
결과 자료형과 오류
프롬프트 아래의 Output type에서 원하는 결과 유형을 선택합니다.
Struct 출력은 지정한 스키마로 엄격하게 파싱합니다. 응답이 맞지 않으면 Cannot coerce to provided output type. 같은 오류가 발생합니다. 비대화형 파이프라인에서 잘못된 구조를 조용히 수용하지 않기 위한 동작입니다.
파싱 오류 처리 방식을 직접 정해야 한다면 결과를 JSON 문자열로 받은 뒤 후속 변환에서 struct로 파싱할 수 있습니다. 이 경우에도 실패를 어떻게 처리할지 파서와 출력 조건에 명시해야 합니다.
Include errors를 선택하면 원래 결과 유형과 오류 문자열을 함께 담는 struct로 출력 유형이 바뀝니다. 해제하면 원래 결과 유형으로 돌아갑니다.
이미 처리한 행 재사용
Skip recomputing rows를 켜면 이전에 처리한 결과를 재사용하여 호출 비용과 시간을 줄일 수 있습니다.
비교 대상은 프롬프트에 실제로 사용하는 입력 열의 값과 매개변수입니다. 프롬프트에 사용하지 않은 열만 달라진 행은 이전 LLM 결과를 재사용할 수 있습니다. 이전 결과가 오류 또는 null인 행은 캐시 대상으로 취급하지 않고 다음 실행에서 다시 계산합니다.
입력 행을 선정하는 상위 로직도 빌드 사이에 결정적이어야 합니다. 중복 제거가 매번 다른 대표 행을 고르는 식이면 재사용되지 않을 수 있습니다. Window 함수 등을 사용할 때는 일관된 대표 행을 선택할 수 있는 정렬 및 동률 해소 기준을 정합니다.
캐시는 Foundry 데이터셋에 저장하며 작게 고정한 메모리 행 수 한도를 사용하는 방식이 아닙니다. 입력이 결정적이고 같은 행들이 반복되는 경우 수천만 행 규모의 사용도 지원합니다.
캐시 초기화
프롬프트나 모델 변경으로 전체 재계산이 필요하면 LLM 화면 위의 경고를 확인하고 캐시를 비울 수 있습니다.
빨간 휴지통 아이콘을 선택하여 초기화하면 다음 배포에서 스냅샷이 발생하고 모든 행을 다시 처리합니다.
출력 유형을 바꾸면 캐시는 자동으로 초기화됩니다. 실수로 바꿨다면 경고 배너의 undo change로 유형 변경을 되돌릴 수 있습니다.
캐시 상태 변경은 브랜치를 병합하는 Changes 화면에도 나타납니다.
여러 후속 출력
같은 Use LLM 노드를 여러 출력이 사용하면서 캐시가 켜져 있다면 모든 출력을 같은 job group에 넣어야 합니다. 서로 다른 그룹이면 배포 오류가 발생합니다.
Job group 설정에서 기본 그룹과 별도로 새 그룹을 만들고 공유 출력을 함께 넣습니다.
모델 고급 설정
| 항목 | 의미 |
|---|---|
| Model Type | 실행할 모델을 선택합니다. GPT 계열의 3.5 또는 4, Mixtral 8x7b 같은 모델 구성이 사용될 수 있으며 실제 선택지는 해당 인스턴스의 제공 및 등록 목록을 따릅니다. |
| Temperature | 높을수록 무작위성이 커지고 낮을수록 더 집중된 응답을 유도합니다. 낮은 값만으로 결과의 절대적 결정성이 보장되지는 않습니다. |
| Max Tokens | 응답에 사용할 최대 토큰 수입니다. |
| Stop Sequence | 지정한 문자열을 만나면 생성을 멈춥니다. 최대 네 개를 설정할 수 있습니다. |
Trial run
보드 아래의 Trial run에서 왼쪽에 시험할 값을 입력하고 Run을 선택합니다.
Add trial run으로 사례를 추가합니다.
실제 입력 표의 일부를 쓰려면 Input table에서 행을 선택하고 Use rows for trial run을 누릅니다. 선택한 행이 채워진 Trial run 화면으로 이동합니다.
실행 후 해당 사례 오른쪽 </> 아이콘으로 실제 보낸 프롬프트와 받은 응답을 확인합니다.
| 상세 항목 | 내용 |
|---|---|
| Initial prompt | 백엔드가 추가하거나 수정한 부분까지 포함하여 모델에 보낸 정확한 프롬프트입니다. |
| Intermediate LLM outputs | 실패한 응답을 포함한 중간 출력입니다. |
| Corrections | 실패에 대해 수행한 수정 내용입니다. |
| Final output | 최종적으로 제공한 결과입니다. |
왼쪽 제목을 선택하면 오른쪽에 원시 텍스트가 표시됩니다.
여러 평가 조건과 테스트 데이터를 지속적으로 관리하려면 평가 모음을 사용합니다. 격리된 환경에서 여러 평가기를 적용하고 결과 데이터셋과 빌드 보고서를 남길 수 있습니다.
생성과 미리보기
다섯 기본 템플릿은 프롬프트를 만들기 전에 Preview에서 생성할 지시문을 볼 수 있습니다. 이 탭은 읽기 전용이므로 수정하려면 Configure로 돌아갑니다.
Create prompt를 선택하면 해당 보드의 템플릿 화면으로 되돌아갈 수 없습니다. 이후 생성한 프롬프트와 출력 열을 편집합니다.
Output column에서 열 이름을 바꾸고 Applied로 변경을 미리보기에 적용합니다. Output table은 처음 50행만 보여 줍니다.
오른쪽 위 Apply로 노드를 추가하면 후속 변환을 연결할 수 있습니다. 메인 그래프에서도 LLM 노드를 선택하여 처음 50행의 미리보기를 볼 수 있습니다.
Spark 배치의 동시성과 비용
LLM 호출은 계산 대부분이 외부에서 수행되어 응답 대기 시간이 큽니다. Use LLM 노드는 코어마다 여러 스레드로 요청을 병행하므로 단일 코어인 Extra Small에서도 높은 동시성을 낼 수 있습니다.
코어나 실행기를 늘리면 동시성이 더 커지지만 모델 제공자와 AIP의 rate limit에 걸릴 수 있습니다. 노드에는 재시도 로직이 있으나, 많은 코어가 실패 요청을 반복하며 기다리면 자원을 낭비합니다.
Extra Small을 기준으로 시작하고 확장할 때는 한 번에 두 코어 이하씩 천천히 늘리는 것이 권장됩니다. Spark 상세 지표에서 job duration과 모든 task의 total runtime을 함께 봅니다.
- 이상적인 확장에서는 job duration이 줄고 전체 task runtime은 비슷하거나 조금만 늘어납니다.
- 전체 task runtime이 크게 늘지만 job duration이 줄지 않으면 코어가 과도하므로 줄입니다.
Use LLM의 호출은 Language Model Service에 바로 가지 않고 functions executor를 거칩니다. 이 계층이 파이프라인의 LLM 로직을 조정하므로 큰 빌드는 LLM 비용 외에 functions executor 사용량도 발생시킵니다.