Any-to-Any
Transformers
Safetensors
nlduni
feature-extraction
custom_code
image-text-to-text
text-to-image
image-to-image
Instructions to use nvidia/NLD-Uni with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use nvidia/NLD-Uni with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("nvidia/NLD-Uni", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 2,905 Bytes
300c478 | 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # ADOBE CONFIDENTIAL
# Copyright 2025 Adobe
# All Rights Reserved.
# NOTICE: All information contained herein is, and remains
# the property of Adobe and its suppliers, if any. The intellectual
# and technical concepts contained herein are proprietary to Adobe
# and its suppliers and are protected by all applicable intellectual
# property laws, including trade secret and copyright laws.
# Dissemination of this information or reproduction of this material
# is strictly forbidden unless prior written permission is obtained
# from Adobe.
from __future__ import annotations
import torch
from .token_constants import DEFAULT_IMAGE_PAD_TOKEN, DEFAULT_IMAGE_TOKEN
import numpy as np
from PIL import ImageOps
def pad_to_square_and_resize(img, size=1024):
padded_img = ImageOps.pad(img, (max(img.size), max(img.size)), color=(0, 0, 0))
resized_img = padded_img.resize((size, size))
return resized_img
def process_images(images, image_processor, model_cfg):
result = []
for image in images:
pixels = image_processor(images=[image], return_tensors='pt').pixel_values
(h, w) = pixels.shape[-2:]
result.append((pixels, torch.tensor([[1, h // 16, w // 16]], dtype=torch.long)))
return result
def tokenizer_image_token(prompt, tokenizer, image_token_index=-200, return_tensors=None, constant_version=None):
prompt = prompt.replace('<image_padding>', '<SPECIAL_23>')
ids = torch.tensor(tokenizer(prompt).input_ids, dtype=torch.long)
ids[ids == 23] = -500
return ids if return_tensors == 'pt' else ids.tolist()
def compute_num_image_tokens(x, image_aspect_ratio, image_processor):
grid = x[0][1]
return (int(grid[0, 1]) // 2, int(grid[0, 2]) // 2)
def fix_one_prompt(prompt, config, n_image_tokens):
image_idx = 0
while DEFAULT_IMAGE_TOKEN in prompt:
newline_token = config.mm_native_newline_token
if newline_token:
if len(n_image_tokens[image_idx]) == 2:
(hh, ww) = n_image_tokens[image_idx]
row = DEFAULT_IMAGE_PAD_TOKEN * ww + newline_token
rows = row * hh
rows = rows.rstrip(newline_token)
prompt = prompt.replace('<image>', rows, 1)
elif len(n_image_tokens[image_idx]) == 3:
(tt, hh, ww) = (int(value) for value in n_image_tokens[image_idx])
row = DEFAULT_IMAGE_PAD_TOKEN * ww + newline_token
per_image = row * hh + newline_token + newline_token
images = (per_image * tt).rstrip(newline_token + newline_token)
prompt = prompt.replace('<image>', images, 1)
else:
raise NotImplementedError()
else:
image_tokens = DEFAULT_IMAGE_PAD_TOKEN * np.prod(n_image_tokens[image_idx])
prompt = prompt.replace('<image>', image_tokens, 1)
image_idx += 1
return prompt
|