NVIDIA NIM(3): NVIDIA API 카탈로그 탐험하기
NVIDIA NIM은 NVIDIA API 카탈로그에서 마우스 몇 번만 클릭하면 GPU 기반 LLM을 테스트할 수 있는 NVIDIA의 클라우드 API 서비스이다. 현재 LLaMA, Mixtral, Gemma, DeepSeek 등 다양한 최신 모델 사용 가능하며, 개발자 친화적인 인터페이스와 무료 크레딧 제공을 제공한다. 그러면, NIM 온라인 웹사이트에서 여러분이 직접 따라해 볼 수 있도록 단계별로 설명하겠다.
실습: NVIDIA API 카탈로그 탐험
- 먼저 NIM을 사용하기 위해서는 [그림 1]과 같이 NVIDIA NIM을 호스트하고 있는 이 웹사이트 주소로 먼저 접속하기 바란다.
[그림 1 - NVIDIA API 카탈로그 및 빌드 웹사이트]
- NVIDIA NIM 을 사용하기 위해서는 사용자는 [그림 2]와 같이 먼저 Login 버튼을 눌러야 한다. 그러면, 다이얼로그 화면에 무료로 API 를 사용할 수 있는 비즈니스 전자 메일과 개인 메일에서 어떤 기능을 사용할 수 있는지 간단한 비교와 함께 여러분의 로그인에 사용할 전자메일 주소를 을 입력하는 란이 나타난다. 이때 텍스트 박스에 여러분의 전자메일 주소를 입력하고 [Next] 버튼을 누른다.
[그림 2 - NVIDIA NIM 전자 메일 입력]
- [그림 3]은 여러분의 사용자 로그인 화면이다. [그림 2]에서 입력한 전자메일 주소가 자동으로 나오고, 여러분들은 Password만 입력해주면 된다. 그런 후 [Log In] 버튼을 눌러주기 바란다. 혹시 Password 가 기억나지 않는다면, [Forgot Password?] 링크를 클릭을 눌러 해당 사항에 대해 입력하면 된다.
[그림 3 - NVIDIA AccouNT 사용자 로그인]
- 사용자 로그인이 성공적으로 끝마쳤다면, [그림 4]에서 보는 것처럼 메인 화면을 보게 될 것이다. 계속해서 NVIDIA가 모델을 업데이트하고 있기 때문에 여러분이 보는 시점에 따라 조금씩 메뉴는 변한다. 여기에서 우리는 오른쪽 위 모서리에 있는 사용자 프로필을 눌러 1,000 Credit 이 남아 있는지 먼저 확인하기 바란다.
[그림 4 - 크레딕 확인]
- 자, 이제 부터 본격적으로 NIM으로 사용할 모델을 검색해 보자! [그림 5] 처럼, 검색 창에서 llama'로 입력하면, 리스트 박스에서 현재 NIM 에서 제공하는 llama 모델이 파라미터 종류별 올라와져 있다. 여기에서 우리는 llama-3.2-1b-Instruct 모델을 하나 선택하기 바란다.
[그림 5 - NIM에서 llama 3.2 모델 검색 및 선택]
- 그러면, [그림 6]과 같이 meta/llama-3-2-1b-instruct 모델의 상세 페이지가 나온다. 여기 화면에서는 모델의 간단한 설명과 더불어, 모델카드를 확인할 수 있고, 오른쪽 화면에서 간단하게 코드를 동작시키면, 해당되는 결과를 왼쪽 Preview 화면에서 보거나, JSON 형태로 보여준다. 여기에서 우리는 [Get API Key] 링크를 눌러 NIM 서비스에서 이 모델을 사용하기 위한 인증 토큰(API Key)을 발급받는 절차를 진행한다.
[그림 6 - API Key 받기]
- 그렇다면, [그림 7]과 같이, 우리가 사용할 Token Key를 생성하기 위해 [Generate Key] 버튼을 누르면 된다.
[그림 7 - API 키 생성하기]
- [그림 8]은 생성된 API를 보여주는 화면이다. 여러분이 생성한 Key는 잃어버리지 않기 위해 [Copy Key] 버튼을 눌러 다른 파일에 잘 저장해서 보관해둔다. 그러면 이 Key를 앞으로 여러분의 소스 코드에서 NIM API를 호출하기 전에 API 인증을 한다.
[그림 8 - 생성된 키 복사하기]
- 이제 복사한 키를 오른쪽 소스 코드 화면에서 Python 을 선택하고, 소스 코드의 api_key =복사한 키 붙여넣기 부분 안에 복사한 키를 붙여넣기 한다. 그리고 오른쪽 Preview 화면의 프롬프트 창에서 What is GPU? 라고 입력한다음, [Send] 버튼을 누른다.
[그림 9 - 복사한 키 붙여넣기 및 프롬프트 창 입력]
- 그러면, [그림 10]과 같이 프롬프트 창에서 입력한 결과 대로 답변을 하는 모습을 볼 수 있다.
[그림 10 - 프롬프트 입력 결과 화면]
- 참고로 [그림 11]은 프롬프트 창 밑에 좀더 세밀하게 파라미터를 조정할 수 있도록 View Parameters 화면이다. 관련된 파라미터 옵션을 조정할 수 있다.
[그림 11 - 그림 11 - 모델 파라미터 조정]
이러한 옵션들은 모델이 추론(inference) 시 텍스트를 생성하는 방식을 조절하는 역할하며, 주로 디코딩 설정 또는 생성 제어 파라미터라고 부른다. 이러한 파라미터는 모델의 학습된 가중치나 파라미터와는 무관하다. 주요 생성 제어 파라미터를 요약하면 다음과 같다.
항목 | 기본값 | 설명 |
---|---|---|
temperature | 0.25 | 텍스트 생성을 위해 확률 분포를 얼마나 무작위로 샘플링할지 결정하는 온도 값 (높을수록 다양하고 예측이 불가능, temperature 와 top_p 값을 동시에 조정하는 것은 권장하지 않음.) |
top_p | 0.75 | nucleus sampling. 누적 확률이 p 이하인 상위 토큰들만 고려해 샘플링. 텍스트 생성을 위해 사용되는 Top-p 샘플링 확률 질량(mass) 값이며, top_p 값은 샘플링 시 고려할 누적 확률의 범위를 결정. 예) top_p = 0.75 로 설정하면, 가장 가능성이 낮은 토큰들 중 누적 확률이 0.75에 도달할 때까지만 선택 후보로 사용 |
frequency_penalty | 0 | 자주 등장한 단어의 확률을 낮춰 반복 억제. 지금까지 생성된 텍스트에서 등장 빈도(frequency)를 기준으로, 새로운 토큰에 얼마나 패널티를 줄지를 나타냄. 같은 문장을 그대로 반복할 가능성을 줄이기 위해 모델의 출력 확률을 낮춤. 0 일 경우, 같은 단어를 반복하는 현상이 생길 수 있음. |
presence_penalty | 0 | 이전에 등장한 단어 자체에 패널티를 주어 새로운 단어 사용 유도. 양의 값을 사용하면, 지금까지 생성된 텍스트에 이미 등장한 토큰에 대해 패널티를 부여함. 모델은 새로운 주제에 대해 이야기할 가능성이 높아짐. 0 일 경우, 문장을 반복하는 현상이 생길 수 있음. |
max_tokens | 1,025 | 한 번의 호출에서 생성할 최대 토큰 수 (출력 길이 제한). 모델이 한 번의 요청에서 생성할 수 있는 최대 토큰 수가 1,025개. 이 값은 모델이 인식하는 것이 아니라, 지정된 토큰 수에 도달하면 단순히 생성을 중단하는 방식으로 동작함. |
stop | 특정 문자열을 만나면 생성을 멈추는 조건. API가 더 이상 토큰 생성을 중단할 시점을 지정하는 문자열(또는 문자열 목록). 지정된 stop 시퀀스가 등장하면 즉시 생성을 멈추며, 반환되는 텍스트에는 해당 stop 문자열이 포함되지 않음 |
또한, Stream 여부는 LLM의 stream
파라미터는 위에서 설명한 생성 제어 파라미터(generation parameter) 중 하나라기보다는, “응답 전달 방식”을 제어하는 출력 방식 설정값(output behavior parameter)이다. LLM이 생성한 텍스트를 한 번에 모두 반환할지, 또는 조금씩 나누어(스트리밍) 반환할지를 제어하는 용도이다.
기본값은 보통 false
이며, 한 번에 전체 출력을 한다. 만일 stream=True
로 설정하면, 토큰이 생성될 때마다 실시간으로 출력한다. 예를 들어, ChatGPT, OpenAI API, LangChain 등에서 토큰 단위로 빠르게 출력되는 효과가 있다.
마무리
- 우리는 지금까지 NIM 웹사이트에 접속해서 사용자 로그인 한 다음, llama-3.2-1b-Instruct` 모델을 선택 후, 토큰 인증을 위해 API 키를 생성한 다음, 왼쪽 프롬프트 창에서 간단히 입력 테스트를 해보고, 디코딩 설정하는 파라미터에 대해 알아보았다.
댓글남기기