Nvidia NIM

Nvidia NIM

LiteLLM에서 Nvidia NIM의 모든 모델을 사용하는 방법을 알아봐요. API 키만 있으면 바로 호출할 수 있어요.

출처: 문서

본문

: 모든 Nvidia NIM 모델을 지원해요. litellm 요청을 보낼 때 model=nvidia_nim/을 접두사로 붙이면 돼요.

속성 내용
설명 Nvidia NIM은 AI 모델을 배포하고 사용하기 위한 간단한 API를 제공하는 플랫폼. LiteLLM은 Nvidia NIM의 모든 모델을 지원해요
LiteLLM 라우트 nvidia_nim/
제공사 문서 Nvidia NIM Docs ↗
제공사 API 엔드포인트 https://integrate.api.nvidia.com/v1/ (chat/embeddings), https://ai.api.nvidia.com/v1/ (rerank)
지원 OpenAI 엔드포인트 /chat/completions, /completions, /responses, /embeddings, /rerank

API 키

# env variable
os.environ['NVIDIA_NIM_API_KEY'] = ""
os.environ['NVIDIA_NIM_API_BASE'] = "" # [OPTIONAL] - default is https://integrate.api.nvidia.com/v1/

사용 예시

from litellm import completion
import os

os.environ['NVIDIA_NIM_API_KEY'] = ""
response = completion(
    model="nvidia_nim/meta/llama3-70b-instruct",
    messages=[
        {
            "role": "user",
            "content": "What's the weather like in Boston today in Fahrenheit?",
        }
    ],
    temperature=0.2,        # optional
    top_p=0.9,              # optional
    frequency_penalty=0.1,  # optional
    presence_penalty=0.1,   # optional
    max_tokens=10,          # optional
    stop=["\n\n"],          # optional
)
print(response)

사용 예시 - 스트리밍

from litellm import completion
import os

os.environ['NVIDIA_NIM_API_KEY'] = ""
response = completion(
    model="nvidia_nim/meta/llama3-70b-instruct",
    messages=[
        {
            "role": "user",
            "content": "What's the weather like in Boston today in Fahrenheit?",
        }
    ],
    stream=True,
    temperature=0.2,        # optional
    top_p=0.9,              # optional
    frequency_penalty=0.1,  # optional
    presence_penalty=0.1,   # optional
    max_tokens=10,          # optional
    stop=["\n\n"],          # optional
)

for chunk in response:
    print(chunk)

사용 예시 - 임베딩

import litellm
import os

response = litellm.embedding(
    model="nvidia_nim/nvidia/nv-embedqa-e5-v5",               # add `nvidia_nim/` prefix to model so litellm knows to route to Nvidia NIM
    input=["good morning from litellm"],
    encoding_format = "float",
    user_id = "user-1234",

    # Nvidia NIM Specific Parameters
    input_type = "passage", # Optional
    truncate = "NONE" # Optional
)
print(response)

LiteLLM Proxy 서버 사용법

config.yaml 수정:

model_list:
  - model_name: my-model
    litellm_params:
      model: nvidia_nim/  # add nvidia_nim/ prefix to route as Nvidia NIM provider
      api_key: api-key                 # api key to send your model
     # api_base: "" # [OPTIONAL] - default is https://integrate.api.nvidia.com/v1/

Proxy 시작:

$ litellm --config /path/to/config.yaml

OpenAI Python SDK로 요청:

import openai
client = openai.OpenAI(
    api_key="sk-",             # pass litellm proxy key, if you're using virtual keys
    base_url="http://0.0.0.0:4000" # litellm-proxy-base url
)

response = client.chat.completions.create(
    model="my-model",
    messages = [
        {
            "role": "user",
            "content": "what llm are you"
        }
    ],
)

print(response)
curl --location 'http://0.0.0.0:4000/chat/completions' \
    --header "Authorization: Bearer ***" \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "my-model",
    "messages": [
        {
        "role": "user",
        "content": "what llm are you"
        }
    ],
}'

지원 모델 - 💥 모든 Nvidia NIM 모델 지원!

모든 nvidia_nim 모델을 지원하며, completion 요청을 보낼 때 nvidia_nim/을 접두사로 붙이면 돼요.

모델명 함수 호출
nvidia/nemotron-4-340b-reward completion(model="nvidia_nim/nvidia/nemotron-4-340b-reward", messages)
01-ai/yi-large completion(model="nvidia_nim/01-ai/yi-large", messages)
aisingapore/sea-lion-7b-instruct completion(model="nvidia_nim/aisingapore/sea-lion-7b-instruct", messages)
databricks/dbrx-instruct completion(model="nvidia_nim/databricks/dbrx-instruct", messages)
google/gemma-7b completion(model="nvidia_nim/google/gemma-7b", messages)
google/gemma-2b completion(model="nvidia_nim/google/gemma-2b", messages)
google/codegemma-1.1-7b completion(model="nvidia_nim/google/codegemma-1.1-7b", messages)
google/codegemma-7b completion(model="nvidia_nim/google/codegemma-7b", messages)
google/recurrentgemma-2b completion(model="nvidia_nim/google/recurrentgemma-2b", messages)
ibm/granite-34b-code-instruct completion(model="nvidia_nim/ibm/granite-34b-code-instruct", messages)
ibm/granite-8b-code-instruct completion(model="nvidia_nim/ibm/granite-8b-code-instruct", messages)
mediatek/breeze-7b-instruct completion(model="nvidia_nim/mediatek/breeze-7b-instruct", messages)
meta/codellama-70b completion(model="nvidia_nim/meta/codellama-70b", messages)
meta/llama2-70b completion(model="nvidia_nim/meta/llama2-70b", messages)
meta/llama3-8b completion(model="nvidia_nim/meta/llama3-8b", messages)
meta/llama3-70b completion(model="nvidia_nim/meta/llama3-70b", messages)
microsoft/phi-3-medium-4k-instruct completion(model="nvidia_nim/microsoft/phi-3-medium-4k-instruct", messages)
microsoft/phi-3-mini-128k-instruct completion(model="nvidia_nim/microsoft/phi-3-mini-128k-instruct", messages)
microsoft/phi-3-mini-4k-instruct completion(model="nvidia_nim/microsoft/phi-3-mini-4k-instruct", messages)
microsoft/phi-3-small-128k-instruct completion(model="nvidia_nim/microsoft/phi-3-small-128k-instruct", messages)
microsoft/phi-3-small-8k-instruct completion(model="nvidia_nim/microsoft/phi-3-small-8k-instruct", messages)
mistralai/codestral-22b-instruct-v0.1 completion(model="nvidia_nim/mistralai/codestral-22b-instruct-v0.1", messages)

(rema Vista에서 더 많은 모델을 Nvidia NIM 공식 문서에서 확인할 수 있어요.)

더 알아보기 (Learn more)

  • Nvidia NIM 공식 문서
  • Nvidia NIM API 레퍼런스