Views
No views yet

pip install torch transformers accelerate pillow decord librosa1import torch
2import transformers
3from transformers import AutoModelForCausalLM, AutoTokenizer
4from PIL import Image
5import warnings
6import librosa
7
8# disable some warnings
9transformers.logging.set_verbosity_error()
10transformers.logging.disable_progress_bar()
11warnings.filterwarnings('ignore')
12
13# set device
14device = 'cuda' # or cpu
15torch.set_default_device(device)
16
17# create model
18print('Loading the model...')
19model = AutoModelForCausalLM.from_pretrained(
20 'phronetic-ai/owlet-phi-2-audio',
21 torch_dtype=torch.float16, # float32 for cpu
22 device_map='auto',
23 trust_remote_code=True)
24tokenizer = AutoTokenizer.from_pretrained(
25 'phronetic-ai/owlet-phi-2-audio',
26 trust_remote_code=True)
27
28print('Model loaded. Processing the query...')
29# text prompt
30prompt = 'What is happening in the video?'
31text = f"A chat between a curious user and an artificial intelligence assistant. \
32 The assistant gives helpful, detailed, and polite answers to the user's questions. \
33 USER: <audio>\n<image>\n{prompt} ASSISTANT:"
34input_ids = tokenizer(text, return_tensors='pt').input_ids.to(model.device)
35
36# video and audio file path
37video_file_path = '/data/sample_files/sample.mp4'
38audio_file_path = '/data/sample_files/sample.wav'
39image_tensor, audio_tensor = (tensor.to(model.device, dtype=model.dtype) for tensor in model.process(video_file_path, audio_file_path, model.config))
40# passing token indices
41IMAGE_TOKEN_INDEX = tokenizer('<image>').input_ids[0]
42AUDIO_TOKEN_INDEX = tokenizer('<audio>').input_ids[0]
43
44# generate
45output_ids = model.generate(
46 input_ids,
47 images=image_tensor,
48 audio=audio_tensor,
49 IMAGE_TOKEN_INDEX=IMAGE_TOKEN_INDEX,
50 AUDIO_TOKEN_INDEX=AUDIO_TOKEN_INDEX,
51 max_new_tokens=100,
52 use_cache=True)[0]
53
54print(f'Response: {tokenizer.decode(output_ids[input_ids.shape[1]:], skip_special_tokens=True).strip()}')
55
56