facebook meta pytorch llama llama-2 llama-2-chat

komt-llama-2-7b-lora

This model fine-tuned the aaa model using PEFT-LoRA.

The "komt-llama-2-7b" model was developed using a multi-task instruction technique aimed at enhancing Korean language performance. For more details, please refer to the GitHub Repository. Please refer below for more detailed information.

For more detailed information, please refer to the https://huggingface.co/davidkim205/komt-Llama-2-7b-chat-hf.

Model Details

Dataset

korean multi-task instruction dataset

Prompt Template

### instruction: {prompt}

### Response: 

Examples:

### instruction: 자동차 종합(정기)검사 의무기간은 얼마인가요?

### Response:

response:

### instruction: 자동차 종합(정기)검사 의무기간은 얼마인가요?

### Response: 자동차 종합(정기)검사 의무기간은 2년입니다. 이 기간 동안 검사를 받지 않으면 과태료가 부과됩니다. 자동차 종합(정기)검사 의무기간은 2013년 12월 31일부터 시행되었습니다

Usage

After downloading from GitHub, please install as follows:

git clone https://github.com/davidkim205/komt
cd komt
pip install -r lora/requirements_lora.txt

import torch

from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from transformers import StoppingCriteria, StoppingCriteriaList
from transformers import TextStreamer, GenerationConfig
from peft import PeftModel, PeftConfig

class LocalStoppingCriteria(StoppingCriteria):

    def __init__(self, tokenizer, stop_words = []):
        super().__init__()

        stops = [tokenizer(stop_word, return_tensors='pt', add_special_tokens = False)['input_ids'].squeeze() for stop_word in stop_words]
        print('stop_words', stop_words)
        print('stop_words_ids', stops)
        self.stop_words = stop_words
        self.stops = [stop.cuda() for stop in stops]
        self.tokenizer = tokenizer
    def _compare_token(self, input_ids):
        for stop in self.stops:
            if len(stop.size()) != 1:
                continue
            stop_len = len(stop)
            if torch.all((stop == input_ids[0][-stop_len:])).item():
                return True

        return False
    def _compare_decode(self, input_ids):
        input_str = self.tokenizer.decode(input_ids[0])
        for stop_word in self.stop_words:
            if input_str.endswith(stop_word):
                return True
        return False

    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor):
        input_str = self.tokenizer.decode(input_ids[0])
        for stop_word in self.stop_words:
            if input_str.endswith(stop_word):
                return True
        return False

#
# config
peft_model_name = 'davidkim205/komt-Llama-2-7b-chat-hf-lora'
model_name = 'davidkim205/komt-Llama-2-7b-chat-hf'
instruction_prefix = "### instruction: "
input_prefix = "### input: "
answer_prefix = "### Response: "
endoftext = "<|end|>"
stop_words = [endoftext, '<s>', '###']
generation_config = GenerationConfig(
    temperature=0.9,
    top_p=0.7,
    top_k=100,
    max_new_tokens=2048,
    early_stopping=True,
    do_sample=True,
)
#
# create model
config = PeftConfig.from_pretrained(peft_model_name)
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=bnb_config,
                                             device_map="auto")
model = PeftModel.from_pretrained(model, peft_model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
stopping_criteria = StoppingCriteriaList([LocalStoppingCriteria(tokenizer=tokenizer, stop_words=stop_words)])
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
model.eval()

#
# generate
prompt = f"### instruction: 자동차 종합(정기)검사 의무기간은 얼마인가요?.\n\n### Response:"
gened = model.generate(
    **tokenizer(
        prompt,
        return_tensors='pt',
        return_token_type_ids=False
    ).to('cuda'),
    generation_config=generation_config,
    eos_token_id=model.config.eos_token_id,
    stopping_criteria=stopping_criteria,
    streamer=streamer
)
output_text = tokenizer.decode(gened[0], skip_special_tokens=True)

print('--------------------')
print(output_text)

response:

nlp는 자연어 처리의 약자로, 자연어를 사용하여 인간과 컴퓨터 간의 상호 작용을 다루는 분야입니다. 컴퓨터와 인간이 서로 상호 작용하는 데 사용되는 언어와 기술을 포함하며, 컴퓨터는 인간의 언어를 처리하고 분석하여 인간의 작업을 돕거나 작업을 자동화하는 데 사용됩니다. 따라서 컴퓨터가 컴퓨터에서 작업하는 데 사용되는 컴퓨터 프로그램이나 프로그램과 비슷하게 인간도 자신의 작업에 사용되는 컴퓨터 프로그램과 비슷한 방식으로 작업할 수 있습니다.

Hardware and Software

Framework versions

Training

Refer github

Model Benchmark

Korean Semantic Textual Similarity

model name Version Metric Value Stderr
meta-llama/Llama-2-7b-chat-hf 0 acc 0.4817 ± 0.0220
beomi/llama-2-ko-7b 0 acc 0.5029 ± 0.0220
kfkas/Llama-2-ko-7b-Chat 0 acc 0.5318 ± 0.0219
komt-llama-2-7b (ours) 0 acc 0.5530 ± 0.0218

Example Output

Please refer to the GitHub link below for performance results of each model. https://github.com/davidkim205/komt/tree/main/eval_results

질문/답변
누전차단기가 내려가는 이유는 무엇입니까?
누전차단기는 누전 시 전기를 차단하여 화재 위험을 줄이기 위해 설치됩니다. 하지만 누전차단기는 시간이 지나면서 설치된 장소에서 멀어지게 되며, 이로 인해 설치된 장소에서 누전차단기가 떨어지면 손상될 수 있습니다. 따라서 누전차단기가 내려가는 것은 이러한 이유 때문입니다. 누전차단기는 누전 시 전기를 차단하기 위해 설치되는 장치이므로, 설치된 장소에서 누전차단기가 떨어지면 손상될 수 있으므로 누전차단기가 내려가는 것은 적절한 관리가 필요합니다.
협력공인중개사란 무엇인가요?
협력공인중개사는 건축, 물류, 토목, 건설 등 다양한 산업 분야에서 공인중개사와 협력하여 건축업자, 소유자 및 토지주를 대신하여 건축 프로젝트를 실행하는 전문가입니다. 이들은 공인중개사와 협력하여 공사 계약, 법률 자문, 건축 허가 및 건축 규정 준수와 같은 프로젝트 업무를 처리합니다. 협력공인중개사는 공인중개사가 건축 프로젝트를 관리하고 건축업자, 소유주 및 토지주와 관련된 다른 당사자를 대신하여 협력할 수 있도록 지원합니다. 협력공인중개사는 공인중개사와 협력하여 프로젝트가 원활하게 진행되고 궁극적으로 소유자가 원하는 결과를 얻을 수 있도록 지원합니다.
수출물품에도 원산지표시를 하여야 하나요?
일반적으로 수출물품에 원산지표시를 하지 않는 것이 일반적입니다. 그러나 원산지표시는 원산지가 아닌 제품을 수출할 경우에는 필수입니다. 원산지표시 제도는 제품의 원산지를 표시하여 수입 제품의 원산지 거짓표시를 방지하고 국내 소비자에게 제품의 원산지를 신뢰할 수 있도록 하기 위해 시행되는 제도입니다. 원산지표시는 표시의무대상자가 원산지표시 의무대상자에 대한 표시의무를 이행하지 않을 경우 최대 100만원 이하의 과태료가 부과됩니다. 하지만 수출물품에는 원산지표시를 하지 않는 것이 일반적이며, 수입물품에는 원산지표시가 의무적입니다. 따라서 수출물품에 원산지표시를 하지 않는 것은 일반적이며, 원산지표시 제도는 수입물품에만 적용됩니다.
자동차 공기압 관리가 왜 중요하나요?
자동차 공기압 관리는 여러 가지 이유로 중요합니다. 첫째, 자동차 공기압은 노면 마찰력을 높여주는 역할을 하며, 노면 마찰 감소로 연비를 향상시키는 효과가 있습니다. 둘째, 공기압이 낮으면 노면 마찰력이 낮아지며, 결국 차량 제동력이 떨어집니다. 따라서 공기압이 낮을 때는 노면 마찰력을 높여주는 효과가 있으며, 반대로 공기압이 높을 때는 노면 마찰력이 높아져 연비가 저하되기도 합니다.
주차위반으로 과태료가 나왔는데 행정심판을 청구할 수 있나요?
행정심판을 청구할 수 있습니다. 하지만 행정심판을 청구하기 전에 법원 판결을 확인해보는 것이 좋습니다. 행정심판 청구 후 법원 판결에 따라 행정심판을 청구할 수 있습니다. 하지만 법원 판결에 따라 행정심판을 청구할 수 없을 수도 있습니다. 행정심판 청구 후 판결에 따라 청구된 사안을 변경할 수 있는 권리는 없습니다.
프리는 어느 나라의 애니메이션이야
일본\n《프리》(プリー 푸리이)는 일본의 애니메이션 작품이다. 2003년 4월 10일부터 2004년 3월 31일까지 후지 TV에서 방영되었으며, 방영시간은 총 108화이다. 단행본은 모두 6권이며, 전3권 본편, 전3권 외전, 전1권 완전판이 있다. 《프리》는 초심 시절의 꿈을 잃어버린 20대 초반의 청년이 자신의 작품에 대한 자신감을 갖고 작가가 되기 위해 노력하는 이야기를 그린 작품이다. 또한 꿈을 향한 청년의 열정과 노력이 성공으로 이어지는 과정을 그리고 있다. 작품 내에서 작가의 모습이 자신과 닮았다는 점에서 많은 화제가 되었다. 제24회 쇼가쿠칸 만화상을 수상했다.
영화 해리포터 시리즈 배급사가 어디야
워너 브라더스\n데이비드 잉글리시는 1990년대 초 시리즈를 시작했다. 이 영화들은 총 8부작으로 만들어졌으며, 첫 번째 작품은 《해리 포터와 마법사의 돌》이다. 작가는 J. K. 롤링이며, 영화 시리즈는 배급사인 워너 브라더스가 만들었다. 촬영은 1997년 7월 11일부터 12월 22일까지 런던에서 이루어졌다. 촬영 장소로는 런던 크릭스 스튜디오와 런던 시티 오피스가 사용되었다. 데이비드 잉글리시는 해리 포터 역할을 맡았다.
왜 세계시간의 기준이 영국의 GMT인가요? 그 이유는 무엇일까요?
영국의 GMT는 세계시간의 기준이 되는 시간대입니다. 그러나 이 시간대는 표준화되지 않았으며, 따라서 다른 나라의 시간대와 차이가 있을 수 있습니다. 따라서 이 시간대를 세계시간으로 착각하는 사람들이 있을 수 있습니다. 따라서, 세계시간의 기준은 표준화된 시간대를 따르도록 하는 것이 중요합니다.

Original model card: Meta's Llama 2 13B-chat

Meta developed and released the Llama 2 family of large language models (LLMs), a collection of pretrained and fine-tuned generative text models ranging in scale from 7 billion to 70 billion parameters. Our fine-tuned LLMs, called Llama-2-Chat, are optimized for dialogue use cases. Llama-2-Chat models outperform open-source chat models on most benchmarks we tested, and in our human evaluations for helpfulness and safety, are on par with some popular closed-source models like ChatGPT and PaLM.

Model Developers Meta

Variations Llama 2 comes in a range of parameter sizes — 7B, 13B, and 70B — as well as pretrained and fine-tuned variations.

Input Models input text only.

Output Models generate text only.

Model Architecture Llama 2 is an auto-regressive language model that uses an optimized transformer architecture. The tuned versions use supervised fine-tuning (SFT) and reinforcement learning with human feedback (RLHF) to align to human preferences for helpfulness and safety.

Training Data Params Content Length GQA Tokens LR
Llama 2 A new mix of publicly available online data 7B 4k 2.0T 3.0 x 10<sup>-4</sup>
Llama 2 A new mix of publicly available online data 13B 4k 2.0T 3.0 x 10<sup>-4</sup>
Llama 2 A new mix of publicly available online data 70B 4k 2.0T 1.5 x 10<sup>-4</sup>

Llama 2 family of models. Token counts refer to pretraining data only. All models are trained with a global batch-size of 4M tokens. The 70B version uses Grouped-Query Attention (GQA) for improved inference scalability.

Model Dates Llama 2 was trained between January 2023 and July 2023.

Status This is a static model trained on an offline dataset. Future versions of the tuned models will be released as we improve model safety with community feedback.

License A custom commercial license is available at: https://ai.meta.com/resources/models-and-libraries/llama-downloads/

Research Paper More information can be found in the paper "Llama-2: Open Foundation and Fine-tuned Chat Models", available at https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/.

Where to send questions or comments about the model Instructions on how to provide feedback or comments on the model can be found in the model README.

Intended Use

Intended Use Cases Llama 2 is intended for commercial and research use in English. Tuned models are intended for assistant-like chat, whereas pretrained models can be adapted for a variety of natural language generation tasks.

Out-of-scope Uses Use in any manner that violates applicable laws or regulations (including trade compliance laws). Use in languages other than English. Use in any other way that is prohibited by the Acceptable Use Policy and Licensing Agreement for Llama 2.

Hardware and Software

Training Factors We used custom training libraries, Meta's Research Super Cluster, and production clusters for pretraining. Fine-tuning, annotation, and evaluation were also performed on third-party cloud compute.

Carbon Footprint Pretraining utilized a cumulative 3.3M GPU hours of computation on hardware of type A100-80GB (TDP of 350-400W). Estimated total emissions were 539 tCO2eq, 100% of which were offset by Meta’s sustainability program.

Time (GPU hours) Power Consumption (W) Carbon Emitted(tCO<sub>2</sub>eq)
Llama 2 7B 184320 400 31.22
Llama 2 13B 368640 400 62.44
Llama 2 70B 1720320 400 291.42
Total 3311616 539.00

CO<sub>2</sub> emissions during pretraining. Time: total GPU time required for training each model. Power Consumption: peak power capacity per GPU device for the GPUs used adjusted for power usage efficiency. 100% of the emissions are directly offset by Meta's sustainability program, and because we are openly releasing these models, the pretraining costs do not need to be incurred by others.

Training Data

Overview Llama 2 was pretrained on 2 trillion tokens of data from publicly available sources. The fine-tuning data includes publicly available instruction datasets, as well as over one million new human-annotated examples. Neither the pretraining nor the fine-tuning datasets include Meta user data.

Data Freshness The pretraining data has a cutoff of September 2022, but some tuning data is more recent, up to July 2023.

Evaluation Results

In this section, we report the results for the Llama 1 and Llama 2 models on standard academic benchmarks. For all the evaluations, we use our internal evaluations library.

Model Size Code Commonsense Reasoning World Knowledge Reading Comprehension Math MMLU BBH AGI Eval
Llama 1 7B 14.1 60.8 46.2 58.5 6.95 35.1 30.3 23.9
Llama 1 13B 18.9 66.1 52.6 62.3 10.9 46.9 37.0 33.9
Llama 1 33B 26.0 70.0 58.4 67.6 21.4 57.8 39.8 41.7
Llama 1 65B 30.7 70.7 60.5 68.6 30.8 63.4 43.5 47.6
Llama 2 7B 16.8 63.9 48.9 61.3 14.6 45.3 32.6 29.3
Llama 2 13B 24.5 66.9 55.4 65.8 28.7 54.8 39.4 39.1
Llama 2 70B 37.5 71.9 63.6 69.4 35.2 68.9 51.2 54.2

Overall performance on grouped academic benchmarks. Code: We report the average pass@1 scores of our models on HumanEval and MBPP. Commonsense Reasoning: We report the average of PIQA, SIQA, HellaSwag, WinoGrande, ARC easy and challenge, OpenBookQA, and CommonsenseQA. We report 7-shot results for CommonSenseQA and 0-shot results for all other benchmarks. World Knowledge: We evaluate the 5-shot performance on NaturalQuestions and TriviaQA and report the average. Reading Comprehension: For reading comprehension, we report the 0-shot average on SQuAD, QuAC, and BoolQ. MATH: We report the average of the GSM8K (8 shot) and MATH (4 shot) benchmarks at top 1.

TruthfulQA Toxigen
Llama 1 7B 27.42 23.00
Llama 1 13B 41.74 23.08
Llama 1 33B 44.19 22.57
Llama 1 65B 48.71 21.77
Llama 2 7B 33.29 21.25
Llama 2 13B 41.86 26.10
Llama 2 70B 50.18 24.60

Evaluation of pretrained LLMs on automatic safety benchmarks. For TruthfulQA, we present the percentage of generations that are both truthful and informative (the higher the better). For ToxiGen, we present the percentage of toxic generations (the smaller the better).

TruthfulQA Toxigen
Llama-2-Chat 7B 57.04 0.00
Llama-2-Chat 13B 62.18 0.00
Llama-2-Chat 70B 64.14 0.01

Evaluation of fine-tuned LLMs on different safety datasets. Same metric definitions as above.

Ethical Considerations and Limitations

Llama 2 is a new technology that carries risks with use. Testing conducted to date has been in English, and has not covered, nor could it cover all scenarios. For these reasons, as with all LLMs, Llama 2’s potential outputs cannot be predicted in advance, and the model may in some instances produce inaccurate, biased or other objectionable responses to user prompts. Therefore, before deploying any applications of Llama 2, developers should perform safety testing and tuning tailored to their specific applications of the model.

Please see the Responsible Use Guide available at https://ai.meta.com/llama/responsible-use-guide/