Spaces:
Sleeping
Sleeping
| import os | |
| import torch | |
| from transformers import AutoModelForVision2Seq, AutoProcessor | |
| from dotenv import load_dotenv | |
| # --- μ€μ λΆλΆ --- | |
| MODEL_NAME = "kakaocorp/kanana-1.5-v-3b-instruct" | |
| SAVE_DIRECTORY = "./lily_llm_core/models/kanana_1_5_v_3b_instruct" | |
| # --- μ€μ λ --- | |
| load_dotenv() | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| print("="*60) | |
| print(f"'{MODEL_NAME}' λͺ¨λΈ λ° νλ‘μΈμ 곡μ λ€μ΄λ‘λλ₯Ό μμν©λλ€.") | |
| print(f"μ μ₯ κ²½λ‘: {SAVE_DIRECTORY}") | |
| print("="*60) | |
| try: | |
| # 1. 곡μ AutoProcessor λ‘λ λ° λ€μ΄λ‘λ | |
| print("\n[1/2] νλ‘μΈμ(Tokenizer+Image Processor) λ€μ΄λ‘λ μ€...") | |
| processor = AutoProcessor.from_pretrained( | |
| MODEL_NAME, | |
| token=HF_TOKEN, | |
| trust_remote_code=True | |
| ) | |
| print("β νλ‘μΈμ λ€μ΄λ‘λ μ±κ³΅!") | |
| # 2. 곡μ AutoModelForVision2Seq λ‘λ λ° λ€μ΄λ‘λ | |
| print("\n[2/2] λͺ¨λΈ λ€μ΄λ‘λ μ€... (μκ°μ΄ 걸릴 μ μμ΅λλ€)") | |
| model = AutoModelForVision2Seq.from_pretrained( | |
| MODEL_NAME, | |
| token=HF_TOKEN, | |
| torch_dtype=torch.bfloat16, # 곡μ μμ μ λμΌνκ² bfloat16 μ¬μ© | |
| trust_remote_code=True | |
| ) | |
| print("β λͺ¨λΈ λ€μ΄λ‘λ μ±κ³΅!") | |
| # 3. λ‘컬 κ²½λ‘μ λͺ¨λΈκ³Ό νλ‘μΈμ λͺ¨λ μ μ₯ | |
| print(f"\n[+] '{SAVE_DIRECTORY}' κ²½λ‘μ λͺ¨λ νμΌ μ μ₯ μ€...") | |
| if not os.path.exists(SAVE_DIRECTORY): | |
| os.makedirs(SAVE_DIRECTORY) | |
| processor.save_pretrained(SAVE_DIRECTORY) | |
| model.save_pretrained(SAVE_DIRECTORY) | |
| print("β λͺ¨λΈκ³Ό νλ‘μΈμ μ μ₯ μλ£!") | |
| print("\n" + "="*60) | |
| print("π λͺ¨λ μμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!") | |
| print("μ΄μ `kanana_1_5_v_3b_instruct.py` νμΌμ μμ νκ³ μλ²λ₯Ό μ€ννμΈμ.") | |
| print("="*60) | |
| except Exception as e: | |
| import traceback | |
| print(f"\nβ μ€λ₯ λ°μ: {e}") | |
| traceback.print_exc() | |
| print("\nνκΉ νμ΄μ€ ν ν°μ΄ μ¬λ°λ₯Έμ§, `huggingface-cli login`μ μ€ννλμ§ νμΈνμΈμ.") |