| import argparse | |
| import os.path | |
| import gradio as gr | |
| from gradio.components import Textbox, Image | |
| from ovis.serve.runner import RunnerArguments, OvisRunner | |
| class Server: | |
| def __init__(self, runner: OvisRunner): | |
| self.runner = runner | |
| def __call__(self, image, text): | |
| response = self.runner.run([image, text]) | |
| output = response["output"] | |
| return output | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser(description='Ovis Server') | |
| parser.add_argument('--model_path', type=str, required=True) | |
| parser.add_argument('--flagging_dir', type=str, default=os.path.expanduser('~/ovis-flagged')) | |
| parser.add_argument('--max_partition', type=int, default=9) | |
| parser.add_argument('--port', type=int, required=True) | |
| args = parser.parse_args() | |
| os.makedirs(args.flagging_dir, exist_ok=True) | |
| runner_args = RunnerArguments( | |
| model_path=args.model_path, | |
| max_partition=args.max_partition | |
| ) | |
| demo = gr.Interface( | |
| fn=Server(OvisRunner(runner_args)), | |
| inputs=[Image(type='pil', label='image'), | |
| Textbox(placeholder='Enter your text here...', label='prompt')], | |
| outputs=gr.Markdown(), | |
| title=args.model_path.split('/')[-1], | |
| flagging_dir=args.flagging_dir | |
| ) | |
| demo.launch(server_port=args.port) | |