|
|
print("app Started")
|
|
|
import torch
|
|
|
from moondream2.config import MoondreamConfig
|
|
|
from moondream2.moondream import MoondreamModel
|
|
|
import torch.profiler
|
|
|
|
|
|
config = MoondreamConfig()
|
|
|
device = "cuda"
|
|
|
model = MoondreamModel(config, setup_caches=False).to(device)
|
|
|
from safetensors.torch import load_file
|
|
|
weights_path = "moondream2/model.safetensors"
|
|
|
state_dict = load_file(weights_path, device=device)
|
|
|
new_state_dict = {}
|
|
|
for key, value in state_dict.items():
|
|
|
|
|
|
if key.startswith('model.'):
|
|
|
new_key = key[6:]
|
|
|
else:
|
|
|
new_key = key
|
|
|
new_state_dict[new_key] = value
|
|
|
state_dict = new_state_dict
|
|
|
missing_keys, unexpected_keys = model.load_state_dict(state_dict, strict=True)
|
|
|
model._setup_caches()
|
|
|
|
|
|
|
|
|
|
|
|
from PIL import Image
|
|
|
image = Image.open("example.png")
|
|
|
query = "home icon at the bottom"
|
|
|
warmup_iters = 2
|
|
|
|
|
|
|
|
|
for i in range(3):
|
|
|
if i == warmup_iters: torch.cuda.cudart().cudaProfilerStart()
|
|
|
if i >= warmup_iters: torch.cuda.nvtx.range_push("iteration{}".format(i))
|
|
|
if i >= warmup_iters: torch.cuda.nvtx.range_push("forward")
|
|
|
points = model.point(image, query)["points"]
|
|
|
if i >= warmup_iters: torch.cuda.nvtx.range_pop()
|
|
|
if i >= warmup_iters: torch.cuda.nvtx.range_pop()
|
|
|
|
|
|
torch.cuda.cudart().cudaProfilerStop()
|
|
|
|