Skip to content

Latest commit

 

History

History
113 lines (90 loc) · 8.23 KB

File metadata and controls

113 lines (90 loc) · 8.23 KB

Родина Phi в NVIDIA NIM

NVIDIA NIM — це набір простих у використанні мікросервісів, створених для прискорення розгортання генеративних моделей ШІ у хмарі, дата-центрах та робочих станціях. NIM класифікуються за сімейством моделей та окремо за кожною моделлю. Наприклад, NVIDIA NIM для великих мовних моделей (LLM) надає потужність найсучасніших LLM для корпоративних застосунків, забезпечуючи неперевершені можливості обробки та розуміння природної мови.

NIM полегшує ІТ- та DevOps-командам самостійне розгортання великих мовних моделей (LLM) у власних керованих середовищах, одночасно надаючи розробникам стандартні API, які дозволяють створювати потужних копілотів, чатботів та AI-асистентів, здатних трансформувати бізнес. Використовуючи передові GPU-акселерації NVIDIA та масштабоване розгортання, NIM пропонує найшвидший шлях до інференсу з неперевершеною продуктивністю.

Ви можете використовувати NVIDIA NIM для інференсу моделей родини Phi

nim

Приклади - Phi-3-Vision у NVIDIA NIM

Уявіть, що у вас є зображення (demo.png), і ви хочете згенерувати Python-код, який обробляє це зображення та зберігає нову версію (phi-3-vision.jpg).

Код вище автоматизує цей процес, виконуючи:

  1. Налаштування середовища та необхідних конфігурацій.
  2. Створення підказки, яка інструктує модель згенерувати потрібний Python-код.
  3. Надсилання підказки моделі та збір згенерованого коду.
  4. Витягування та виконання згенерованого коду.
  5. Відображення оригінального та обробленого зображень.

Такий підхід використовує потужність ШІ для автоматизації завдань обробки зображень, роблячи процес простішим і швидшим.

Приклад коду

Розглянемо покроково, що робить увесь код:

  1. Встановлення необхідного пакету:

    !pip install langchain_nvidia_ai_endpoints -U

    Ця команда встановлює пакет langchain_nvidia_ai_endpoints, забезпечуючи його актуальну версію.

  2. Імпорт необхідних модулів:

    from langchain_nvidia_ai_endpoints import ChatNVIDIA
    import getpass
    import os
    import base64

    Ці імпорти підключають модулі для взаємодії з NVIDIA AI endpoints, безпечного оброблення паролів, роботи з операційною системою та кодування/декодування даних у форматі base64.

  3. Налаштування API ключа:

    if not os.getenv("NVIDIA_API_KEY"):
        os.environ["NVIDIA_API_KEY"] = getpass.getpass("Enter your NVIDIA API key: ")

    Цей код перевіряє, чи встановлена змінна середовища NVIDIA_API_KEY. Якщо ні, користувача просять безпечно ввести свій API ключ.

  4. Визначення моделі та шляху до зображення:

    model = 'microsoft/phi-3-vision-128k-instruct'
    chat = ChatNVIDIA(model=model)
    img_path = './imgs/demo.png'

    Тут задається модель для використання, створюється екземпляр ChatNVIDIA з обраною моделлю, а також визначається шлях до файлу зображення.

  5. Створення текстової підказки:

    text = "Please create Python code for image, and use plt to save the new picture under imgs/ and name it phi-3-vision.jpg."

    Визначається текстова підказка, яка інструктує модель згенерувати Python-код для обробки зображення.

  6. Кодування зображення у base64:

    with open(img_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode()
    image = f'<img src="data:image/png;base64,{image_b64}" />'

    Цей код зчитує файл зображення, кодує його у base64 та створює HTML-тег зображення з закодованими даними.

  7. Об’єднання тексту та зображення у підказку:

    prompt = f"{text} {image}"

    Тут текстова підказка та HTML-тег зображення об’єднуються в один рядок.

  8. Генерація коду за допомогою ChatNVIDIA:

    code = ""
    for chunk in chat.stream(prompt):
        print(chunk.content, end="")
        code += chunk.content

    Цей код надсилає підказку моделі ChatNVIDIA і збирає згенерований код по частинах, виводячи та додаючи кожну частину до рядка code.

  9. Витягування Python-коду зі згенерованого контенту:

    begin = code.index('```python') + 9
    code = code[begin:]
    end = code.index('```')
    code = code[:end]

    Цей крок виділяє власне Python-код зі згенерованого контенту, видаляючи markdown-форматування.

  10. Виконання згенерованого коду:

    import subprocess
    result = subprocess.run(["python", "-c", code], capture_output=True)

    Тут витягнутий Python-код запускається як підпроцес, а його вивід захоплюється.

  11. Відображення зображень:

    from IPython.display import Image, display
    display(Image(filename='./imgs/phi-3-vision.jpg'))
    display(Image(filename='./imgs/demo.png'))

    Ці рядки відображають зображення за допомогою модуля IPython.display.

Відмова від відповідальності:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.