|
## Installation |
|
|
|
1. Install Package |
|
|
|
```shell |
|
conda create -n llava python=3.10 -y |
|
conda activate llava |
|
pip install --upgrade pip # enable PEP 660 support |
|
pip install -e . |
|
``` |
|
|
|
2. Install additional packages for training cases |
|
|
|
```shell |
|
pip install -e ".[train]" |
|
pip install flash-attn --no-build-isolation |
|
``` |
|
|
|
## Interface |
|
|
|
```python |
|
from llava_llama3.serve.cli import chat_llava |
|
from llava_llama3.model.builder import load_pretrained_model |
|
import argparse |
|
import os |
|
import glob |
|
import pandas as pd |
|
from tqdm import tqdm |
|
import json |
|
|
|
root_path = os.path.dirname(os.path.abspath(__file__)) |
|
print(f'\033[92m{root_path}\033[0m') |
|
|
|
parser = argparse.ArgumentParser() |
|
parser.add_argument("--model-path", type=str, default="TobyYang7/MFFM-8B-finma-v8") |
|
parser.add_argument("--device", type=str, default="cuda") |
|
parser.add_argument("--conv-mode", type=str, default="llama_3") |
|
parser.add_argument("--temperature", type=float, default=0) |
|
parser.add_argument("--max-new-tokens", type=int, default=512) |
|
parser.add_argument("--load-8bit", action="store_true") |
|
parser.add_argument("--load-4bit", action="store_true") |
|
args = parser.parse_args() |
|
|
|
# load model |
|
tokenizer, llava_model, image_processor, context_len = load_pretrained_model(args.model_path, None, 'llava_llama3', args.load_8bit, args.load_4bit, device=args.device) |
|
|
|
print('\033[92mRunning chat\033[0m') |
|
output = chat_llava(args=args, |
|
image_file=root_path+'/data/llava_logo.png', |
|
text='What is this?', |
|
tokenizer=tokenizer, |
|
model=llava_model, |
|
image_processor=image_processor, # todo: input model name or path |
|
context_len=context_len) |
|
print('\033[94m', output, '\033[0m') |
|
``` |
|
|
|
If you encounter the error `No module named 'llava_llama3'`, set the `PYTHONPATH` as follows: |
|
|
|
```shell |
|
export PYTHONPATH=$PYTHONPATH:{$your_dir}/llava_llama3 |
|
``` |