metadata
base_model:
- meta-llama/Meta-Llama-3-8B
language:
- en
- ko
library_name: transformers
license: llama3
Update!
[2024.08.09] Llama3.1 λ²μ μ κΈ°λ°μΌλ‘ν Bllossom-8Bλ‘ λͺ¨λΈμ μ λ°μ΄νΈ νμ΅λλ€. κΈ°μ‘΄ llama3κΈ°λ° Bllossom λ³΄λ€ νκ· 5%μ λ μ±λ₯ ν₯μμ΄ μμμ΅λλ€.(μμ μ€μ μμ΅λλ€.)- [2024.06.18] μ¬μ νμ΅λμ 250GBκΉμ§ λλ¦° Bllossom ELOλͺ¨λΈλ‘ μ λ°μ΄νΈ λμμ΅λλ€. λ€λ§ λ¨μ΄νμ₯μ νμ§ μμμ΅λλ€. κΈ°μ‘΄ λ¨μ΄νμ₯λ long-context λͺ¨λΈμ νμ©νκ³ μΆμΌμ λΆμ κ°μΈμ°λ½μ£ΌμΈμ!
- [2024.06.18] Bllossom ELO λͺ¨λΈμ μ체 κ°λ°ν ELOμ¬μ νμ΅ κΈ°λ°μΌλ‘ μλ‘μ΄ νμ΅λ λͺ¨λΈμ λλ€. LogicKor λ²€μΉλ§ν¬ κ²°κ³Ό νμ‘΄νλ νκ΅μ΄ 10Bμ΄ν λͺ¨λΈμ€ SOTAμ μλ₯Ό λ°μμ΅λλ€.
LogicKor μ±λ₯ν :
Model | Math | Reasoning | Writing | Coding | Understanding | Grammar | Single ALL | Multi ALL | Overall |
---|---|---|---|---|---|---|---|---|---|
gpt-3.5-turbo-0125 | 7.14 | 7.71 | 8.28 | 5.85 | 9.71 | 6.28 | 7.50 | 7.95 | 7.72 |
gemini-1.5-pro-preview-0215 | 8.00 | 7.85 | 8.14 | 7.71 | 8.42 | 7.28 | 7.90 | 6.26 | 7.08 |
llama-3-Korean-Bllossom-8B | 5.43 | 8.29 | 9.0 | 4.43 | 7.57 | 6.86 | 6.93 | 6.93 | 6.93 |
Bllossom | Demo | Homepage | Github |
μ ν¬ Bllossomν μμ νκ΅μ΄-μμ΄ μ΄μ€ μΈμ΄λͺ¨λΈμΈ Bllossomμ 곡κ°νμ΅λλ€!
μμΈκ³ΌκΈ°λ μνΌμ»΄ν¨ν
μΌν°μ μ§μμΌλ‘ 100GBκ°λλ νκ΅μ΄λ‘ λͺ¨λΈμ 체λ₯Ό ννλν νκ΅μ΄ κ°ν μ΄μ€μΈμ΄ λͺ¨λΈμ
λλ€!
νκ΅μ΄ μνλ λͺ¨λΈ μ°Ύκ³ μμ§ μμΌμ
¨λμ?
- νκ΅μ΄ μ΅μ΄! λ¬΄λ € 3λ§κ°κ° λλ νκ΅μ΄ μ΄ννμ₯
- Llama3λλΉ λλ΅ 25% λ κΈ΄ κΈΈμ΄μ νκ΅μ΄ Context μ²λ¦¬κ°λ₯
- νκ΅μ΄-μμ΄ Pararell Corpusλ₯Ό νμ©ν νκ΅μ΄-μμ΄ μ§μμ°κ²° (μ¬μ νμ΅)
- νκ΅μ΄ λ¬Έν, μΈμ΄λ₯Ό κ³ λ €ν΄ μΈμ΄νμκ° μ μν λ°μ΄ν°λ₯Ό νμ©ν λ―ΈμΈμ‘°μ
- κ°ννμ΅
μ΄ λͺ¨λ κ² νκΊΌλ²μ μ μ©λκ³ μμ
μ μ΄μ©μ΄ κ°λ₯ν Bllossomμ μ΄μ©ν΄ μ¬λ¬λΆ λ§μ λͺ¨λΈμ λ§λ€μ΄λ³΄μΈμ₯!
λ¬΄λ € Colab λ¬΄λ£ GPUλ‘ νμ΅μ΄ κ°λ₯ν©λλ€. νΉμ μμν λͺ¨λΈλ‘ CPUμμ¬λ €λ³΄μΈμ [μμνλͺ¨λΈ](https://huggingface.co/MLP-KTLim/llama-3-Korean-Bllossom-8B-4bit)
1. Bllossom-8Bλ μμΈκ³ΌκΈ°λ, ν
λμΈ, μ°μΈλ μΈμ΄μμ μ°κ΅¬μ€μ μΈμ΄νμμ νμ
ν΄ λ§λ μ€μ©μ£ΌμκΈ°λ° μΈμ΄λͺ¨λΈμ
λλ€! μμΌλ‘ μ§μμ μΈ μ
λ°μ΄νΈλ₯Ό ν΅ν΄ κ΄λ¦¬νκ² μ΅λλ€ λ§μ΄ νμ©ν΄μ£ΌμΈμ π
2. μ΄ κ°λ ₯ν Advanced-Bllossom 8B, 70Bλͺ¨λΈ, μκ°-μΈμ΄λͺ¨λΈμ 보μ νκ³ μμ΅λλ€! (κΆκΈνμ λΆμ κ°λ³ μ°λ½μ£ΌμΈμ!!)
3. Bllossomμ NAACL2024, LREC-COLING2024 (ꡬλ) λ°νλ‘ μ±νλμμ΅λλ€.
4. μ’μ μΈμ΄λͺ¨λΈ κ³μ μ
λ°μ΄νΈ νκ² μ΅λλ€!! νκ΅μ΄ κ°νλ₯Όμν΄ κ³΅λ μ°κ΅¬νμ€λΆ(νΉνλ
Όλ¬Έ) μΈμ λ νμν©λλ€!!
νΉν μλμ GPUλΌλ λμ¬ κ°λ₯ννμ μΈμ λ μ°λ½μ£ΌμΈμ! λ§λ€κ³ μΆμκ±° λμλλ €μ.
The Bllossom language model is a Korean-English bilingual language model based on the open-source LLama3. It enhances the connection of knowledge between Korean and English. It has the following features:
- Knowledge Linking: Linking Korean and English knowledge through additional training
- Vocabulary Expansion: Expansion of Korean vocabulary to enhance Korean expressiveness.
- Instruction Tuning: Tuning using custom-made instruction following data specialized for Korean language and Korean culture
- Human Feedback: DPO has been applied
- Vision-Language Alignment: Aligning the vision transformer with this language model
This model developed by MLPLab at Seoultech, Teddysum and Yonsei Univ
Demo Video
NEWS
- [2024.06.18] We have reverted to the non-vocab-expansion model. However, we have significantly increased the amount of pre-training data to 250GB.
- [2024.05.08] Vocab Expansion Model Update
- [2024.04.25] We released Bllossom v2.0, based on llama-3
Example code
Colab Tutorial
Install Dependencies
pip install torch transformers==4.40.0 accelerate
Python code with Pipeline
import transformers
import torch
model_id = "MLP-KTLim/llama-3-Korean-Bllossom-8B"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
pipeline.model.eval()
PROMPT = '''You are a helpful AI assistant. Please answer the user's questions kindly. λΉμ μ μ λ₯ν AI μ΄μμ€ν΄νΈ μ
λλ€. μ¬μ©μμ μ§λ¬Έμ λν΄ μΉμ νκ² λ΅λ³ν΄μ£ΌμΈμ.'''
instruction = "μμΈμ μ λͺ
ν κ΄κ΄ μ½μ€λ₯Ό λ§λ€μ΄μ€λ?"
messages = [
{"role": "system", "content": f"{PROMPT}"},
{"role": "user", "content": f"{instruction}"}
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=2048,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9
)
print(outputs[0]["generated_text"][len(prompt):])
# λ¬Όλ‘ μ΄μ£ ! μμΈμ λ€μν λ¬Ένμ μμ¬, μμ°μ κ²ΈλΉν λμλ‘, λ§μ κ΄κ΄ λͺ
μλ₯Ό μλν©λλ€. μ¬κΈ° μμΈμ μ λͺ
ν κ΄κ΄ μ½μ€λ₯Ό μκ°ν΄ λ릴κ²μ.
### μ½μ€ 1: μμ¬μ λ¬Έν νλ°©
1. **경볡κΆ**
- μμΈμ λνμ μΈ κΆκΆλ‘, μ‘°μ μμ‘°μ μμ¬μ λ¬Ένλ₯Ό 체νν μ μλ κ³³μ
λλ€.
2. **λΆμ΄ νμ₯λ§μ**
- μ ν΅ νμ₯μ΄ μ 보쑴λ λ§μλ‘, μ‘°μ μλμ μνμμ λλ μ μμ΅λλ€.
3. **μΈμ¬λ**
- μ ν΅ λ¬Ένμ νλ μμ μ΄ κ³΅μ‘΄νλ 거리λ‘, λ€μν κ°€λ¬λ¦¬μ μ ν΅ μμμ μ΄ μμ΅λλ€.
4. **μ²κ³μ²**
- μμΈμ μ€μ¬μ μμΉν μ²λ¬ΈμΌλ‘, μ‘°κΉ
κ³Ό μ°μ±
μ μ¦κΈΈ μ μλ κ³³μ
λλ€.
### μ½μ€ 2: μμ°κ³Ό μΌν
1. **λ¨μ° μμΈνμ**
- μμΈμ μ κ²½μ νλμ λ³Ό μ μλ κ³³μΌλ‘, νΉν μ λ
μκ°λμ μΌλͺ°μ κ°μνλ κ²μ΄ μ’μ΅λλ€.
2. **λͺ
λ**
- μΌνκ³Ό μμμ μ΄ μ¦λΉν μ§μμΌλ‘, λ€μν λΈλλμ μ ν΅ μμμ λ§λ³Ό μ μμ΅λλ€.
3. **νκ°κ³΅μ**
- μμΈμ μ£Όμ 곡μ μ€ νλλ‘, μ‘°κΉ
, μμ κ±° νκΈ°, λ°°λ μ¬νμ μ¦κΈΈ μ μμ΅λλ€.
4. **νλ**
- μ μμ΄λ€μ΄ μ¦κ²¨ μ°Ύλ μ§μμΌλ‘, λ€μν μΉ΄ν, λ μ€ν λ, ν΄λ½μ΄ μμ΅λλ€.
### μ½μ€ 3: νλμ μ ν΅μ μ‘°ν
1. **λλλ¬Έ λμμΈ νλΌμ (DDP)**
- νλμ μΈ κ±΄μΆλ¬Όλ‘, λ€μν μ μμ μ΄λ²€νΈκ° μ΄λ¦¬λ κ³³μ
λλ€.
2. **μ΄νμ**
- λ€μν κ΅μ μμκ³Ό μΉ΄νκ° μλ μ§μμΌλ‘, λ€μν λ¬Ένλ₯Ό κ²½νν μ μμ΅λλ€.
3. **κ΄νλ¬Έ**
- μμΈμ μ€μ¬μ μμΉν κ΄μ₯μΌλ‘, λ€μν 곡μ°κ³Ό νμ¬κ° μ΄λ¦½λλ€.
4. **μμΈλλ**
- μμΈ μΈκ³½μ μμΉν ν
λ§νν¬λ‘, κ°μ‘±λ¨μ κ΄κ΄κ°λ€μκ² μΈκΈ° μλ κ³³μ
λλ€.
μ΄ μ½μ€λ€μ μμΈμ λ€μν λ©΄λͺ¨λ₯Ό κ²½νν μ μλλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. κ° μ½μ€λ§λ€ μκ°μ μ‘°μ νκ³ , κ°μΈμ κ΄μ¬μ¬μ λ§κ² μ ννμ¬ λ°©λ¬Ένλ©΄ μ’μ κ² κ°μ΅λλ€. μ¦κ±°μ΄ μ¬ν λμΈμ!
Python code with AutoModel
import os
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = 'MLP-KTLim/llama-3-Korean-Bllossom-8B'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model.eval()
PROMPT = '''You are a helpful AI assistant. Please answer the user's questions kindly. λΉμ μ μ λ₯ν AI μ΄μμ€ν΄νΈ μ
λλ€. μ¬μ©μμ μ§λ¬Έμ λν΄ μΉμ νκ² λ΅λ³ν΄μ£ΌμΈμ.'''
instruction = "μμΈμ μ λͺ
ν κ΄κ΄ μ½μ€λ₯Ό λ§λ€μ΄μ€λ?"
messages = [
{"role": "system", "content": f"{PROMPT}"},
{"role": "user", "content": f"{instruction}"}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=2048,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9
)
print(tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True))
# λ¬Όλ‘ μ΄μ£ ! μμΈμ λ€μν λ¬Ένμ μμ¬, μμ°μ κ²ΈλΉν λμλ‘, λ§μ κ΄κ΄ λͺ
μλ₯Ό μλν©λλ€. μ¬κΈ° μμΈμ μ λͺ
ν κ΄κ΄ μ½μ€λ₯Ό μκ°ν΄ λ릴κ²μ.
### μ½μ€ 1: μμ¬μ λ¬Έν νλ°©
1. **경볡κΆ**
- μμΈμ λνμ μΈ κΆκΆλ‘, μ‘°μ μμ‘°μ μμ¬μ λ¬Ένλ₯Ό 체νν μ μλ κ³³μ
λλ€.
2. **λΆμ΄ νμ₯λ§μ**
- μ ν΅ νμ₯μ΄ μ 보쑴λ λ§μλ‘, μ‘°μ μλμ μνμμ λλ μ μμ΅λλ€.
3. **μΈμ¬λ**
- μ ν΅ λ¬Ένμ νλ μμ μ΄ κ³΅μ‘΄νλ 거리λ‘, λ€μν κ°€λ¬λ¦¬μ μ ν΅ μμμ μ΄ μμ΅λλ€.
4. **μ²κ³μ²**
- μμΈμ μ€μ¬μ μμΉν μ²λ¬ΈμΌλ‘, μ‘°κΉ
κ³Ό μ°μ±
μ μ¦κΈΈ μ μλ κ³³μ
λλ€.
### μ½μ€ 2: μμ°κ³Ό μΌν
1. **λ¨μ° μμΈνμ**
- μμΈμ μ κ²½μ νλμ λ³Ό μ μλ κ³³μΌλ‘, νΉν μ λ
μκ°λμ μΌλͺ°μ κ°μνλ κ²μ΄ μ’μ΅λλ€.
2. **λͺ
λ**
- μΌνκ³Ό μμμ μ΄ μ¦λΉν μ§μμΌλ‘, λ€μν λΈλλμ μ ν΅ μμμ λ§λ³Ό μ μμ΅λλ€.
3. **νκ°κ³΅μ**
- μμΈμ μ£Όμ 곡μ μ€ νλλ‘, μ‘°κΉ
, μμ κ±° νκΈ°, λ°°λ μ¬νμ μ¦κΈΈ μ μμ΅λλ€.
4. **νλ**
- μ μμ΄λ€μ΄ μ¦κ²¨ μ°Ύλ μ§μμΌλ‘, λ€μν μΉ΄ν, λ μ€ν λ, ν΄λ½μ΄ μμ΅λλ€.
### μ½μ€ 3: νλμ μ ν΅μ μ‘°ν
1. **λλλ¬Έ λμμΈ νλΌμ (DDP)**
- νλμ μΈ κ±΄μΆλ¬Όλ‘, λ€μν μ μμ μ΄λ²€νΈκ° μ΄λ¦¬λ κ³³μ
λλ€.
2. **μ΄νμ**
- λ€μν κ΅μ μμκ³Ό μΉ΄νκ° μλ μ§μμΌλ‘, λ€μν λ¬Ένλ₯Ό κ²½νν μ μμ΅λλ€.
3. **κ΄νλ¬Έ**
- μμΈμ μ€μ¬μ μμΉν κ΄μ₯μΌλ‘, λ€μν 곡μ°κ³Ό νμ¬κ° μ΄λ¦½λλ€.
4. **μμΈλλ**
- μμΈ μΈκ³½μ μμΉν ν
λ§νν¬λ‘, κ°μ‘±λ¨μ κ΄κ΄κ°λ€μκ² μΈκΈ° μλ κ³³μ
λλ€.
μ΄ μ½μ€λ€μ μμΈμ λ€μν λ©΄λͺ¨λ₯Ό κ²½νν μ μλλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. κ° μ½μ€λ§λ€ μκ°μ μ‘°μ νκ³ , κ°μΈμ κ΄μ¬μ¬μ λ§κ² μ ννμ¬ λ°©λ¬Ένλ©΄ μ’μ κ² κ°μ΅λλ€. μ¦κ±°μ΄ μ¬ν λμΈμ!
Citation
Language Model
@misc{bllossom,
author = {ChangSu Choi, Yongbin Jeong, Seoyoon Park, InHo Won, HyeonSeok Lim, SangMin Kim, Yejee Kang, Chanhyuk Yoon, Jaewan Park, Yiseul Lee, HyeJin Lee, Younggyun Hahm, Hansaem Kim, KyungTae Lim},
title = {Optimizing Language Augmentation for Multilingual Large Language Models: A Case Study on Korean},
year = {2024},
journal = {LREC-COLING 2024},
paperLink = {\url{https://arxiv.org/pdf/2403.10882}},
},
}
Vision-Language Model
@misc{bllossom-V,
author = {Dongjae Shin, Hyunseok Lim, Inho Won, Changsu Choi, Minjun Kim, Seungwoo Song, Hangyeol Yoo, Sangmin Kim, Kyungtae Lim},
title = {X-LLaVA: Optimizing Bilingual Large Vision-Language Alignment},
year = {2024},
publisher = {GitHub},
journal = {NAACL 2024 findings},
paperLink = {\url{https://arxiv.org/pdf/2403.11399}},
},
}
Contact
- μκ²½ν(KyungTae Lim), Professor at Seoultech.
ktlim@seoultech.ac.kr
- ν¨μκ· (Younggyun Hahm), CEO of Teddysum.
hahmyg@teddysum.ai
- κΉνμ(Hansaem Kim), Professor at Yonsei.
khss@yonsei.ac.kr
Contributor
- μ΅μ°½μ(Chansu Choi), choics2623@seoultech.ac.kr
- κΉμλ―Ό(Sangmin Kim), sangmin9708@naver.com
- μμΈνΈ(Inho Won), wih1226@seoultech.ac.kr
- κΉλ―Όμ€(Minjun Kim), mjkmain@seoultech.ac.kr
- μ‘μΉμ°(Seungwoo Song), sswoo@seoultech.ac.kr
- μ λμ¬(Dongjae Shin), dylan1998@seoultech.ac.kr
- μνμ(Hyeonseok Lim), gustjrantk@seoultech.ac.kr
- μ‘μ ν(Jeonghun Yuk), usually670@gmail.com
- μ νκ²°(Hangyeol Yoo), 21102372@seoultech.ac.kr
- μ‘μν(Seohyun Song), alexalex225225@gmail.com