code: def eval_rollout(model, prep, initial_frame, n_object, device):
      current_frame = initial_frame.to(device)
      base_graph = nx.complete_graph(n_object)
      graph = dgl.from_networkx(base_graph).to(device)
      pos_buffer = []
      model.eval()
      for step in range(100):
          node_feats, edge_feats = prep(graph, current_frame)
          dummy_relation = (
              torch.zeros(edge_feats.shape[0], 1).float().to(device)
          )
          dummy_global = (
              torch.zeros(node_feats.shape[0], 1).float().to(device)
          )
          v_pred, _ = model(
              graph,
              node_feats[:, 3:5].float(),
              edge_feats.float(),
              dummy_global,
              dummy_relation,
          )
          current_frame[:, [1, 2]] += v_pred * 0.001
          current_frame[:, 3:5] = v_pred
          pos_buffer.append(current_frame[:, [1, 2]].cpu().numpy())
      pos_buffer = np.vstack(pos_buffer).reshape(100, n_object, -1)
      make_video(pos_buffer, "video_model.mp4")
  
file_path: dgl/examples/pytorch/graphsim/train.py
imports: import argparse
  import time
  import traceback
  import dgl
  import networkx
  import numpy
  import torch
  from dataloader import MultiBodyGraphCollator, MultiBodyTestDataset, MultiBodyTrainDataset, MultiBodyValidDataset
  from models import InteractionNet, MLP, PrepareLayer
  from torch.utils.data import DataLoader
  from utils import make_video
label_desc: Use image node_id 3 for calling a global function with example usage: eval_rollout(model, prep, initial_frame, n_object, device) without return types