File size: 4,783 Bytes
65dd6ae
 
 
 
 
 
 
 
 
5217d78
65dd6ae
 
a23beaa
bf1b491
65dd6ae
ebc2061
65dd6ae
 
393117d
bf1b491
cecf105
0507eed
12aab84
 
bf1b491
65dd6ae
0507eed
39ac725
7fbb404
c167a74
 
7fbb404
 
c167a74
 
 
 
7fbb404
0507eed
cecf105
0507eed
bf1b491
12aab84
 
 
 
 
 
 
 
7fbb404
cecf105
 
12aab84
 
 
 
 
 
 
 
699baf8
12aab84
0507eed
12aab84
 
bf1b491
12aab84
bf1b491
12aab84
 
 
 
 
65dd6ae
 
 
 
 
 
393117d
 
bf1b491
65dd6ae
bf1b491
 
65dd6ae
 
 
393117d
 
 
 
 
65dd6ae
a23beaa
65dd6ae
 
 
1a43a0b
65dd6ae
 
 
393117d
65dd6ae
393117d
65dd6ae
393117d
 
65dd6ae
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
---
language:
- en
- ja
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
---

# PLaMo-13B-Instruct

## Model Description
PLaMo-13B-Instruct is an instruct fine-tuned model built upon the 8192 context length version of [PLaMo-13B](https://huggingface.co/pfnet/plamo-13b) text generation model. PLaMo-13B-Instruct is fine-tuned using multiple publicly available Japanese datasets.
This model is released under the Apache License 2.0.

[PLaMo-13B-Instruct Release blog (Japanese)](https://tech.preferred.jp/ja/blog/llm-plamo-instruct/)


## Usage
Install the required libraries as follows:
```sh
>>> python -m pip install numpy sentencepiece torch transformers accelerate
```

Execute the following python code:
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(
    "pfnet/plamo-13b-instruct",
    trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
    "pfnet/plamo-13b-instruct",
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
```

```python
def completion(prompt: str, max_new_tokens: int = 128) -> str:
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    generated_ids = model.generate(
        inputs.input_ids,
        eos_token_id=2,
        pad_token_id=3,
        max_new_tokens=max_new_tokens,
        temperature=1,
        top_p=0.95,
        top_k=50,
        do_sample=True,
    )
    return tokenizer.decode(generated_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)

def generate_prompt(messages: list) -> str:
    sep = "\n\n### "
    prompt = [
        "以下はタスクを説明する指示で、文脈を説明した入力とペアになっています。",
        "要求を適切に補完するよう応答を書いてください。",
    ]
    roles = {"instruction": "指示", "response": "応答", "input": "入力"}
    for msg in messages:
        prompt.append(sep + roles[msg["role"]] + ":\n" + msg["content"])
    prompt.append(sep + roles["response"] + ":\n")
    return "".join(prompt)
```

```python
prompt = generate_prompt([
    {"role": "instruction", "content": "日本の首都はどこですか?"},
    # {"role": "input", "content": "..."}  ## An extra input (optional)
])
print(completion(prompt, max_new_tokens=128))
```

## Model Details

- Model size: 13B
- Trained tokens: 1.5T tokens (English: 1.32T tokens, Japanese: 0.18T tokens)
- Tokenizer: sentencepiece tokenizer trained on a subset of the pretraining datasets.
- Context length: 8192
- Developed by: Preferred Networks, Inc
- Model type: Causal decoder-only
- Language(s): Japanese and English
- License: Apache License 2.0

## Training Dataset

<!-- - [Stanford Alpaca (Japanese translation)](https://huggingface.co/datasets/fujiki/japanese_alpaca_data)-->
- [databricks-dolly-15k (Japanese translation)](https://huggingface.co/datasets/kunishou/databricks-dolly-15k-ja)
- [Anthropic HH-RLHF (Japanese translation, subset)](https://huggingface.co/datasets/fujiki/japanese_hh-rlhf-49k)
- [OpenAssistant Conversations Dataset (Japanese translation, oasst1)](https://huggingface.co/datasets/kunishou/oasst1-89k-ja)
- [Wikinews subset of Izumi-lab llm-japanese-dataset](https://huggingface.co/datasets/izumi-lab/llm-japanese-dataset)

For the pretraining model, see [PLaMo-13B](https://huggingface.co/pfnet/plamo-13b).


## Bias, Risks, and Limitations
PLaMo-13B-Instruct is a new technology that carries risks with use. Testing conducted to date has been in English and Japanese, and has not covered, nor could it cover all scenarios. For these reasons, as with all LLMs, PLaMo-13B-Instruct-NC’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 PLaMo-13B-Instruct, developers should perform safety testing and tuning tailored to their specific applications of the model.

## How to cite
```tex
@online{PLaMoInstruct2023Introducing,
    author    = {Preferred Networks, Inc},
    title     = {PLaMo-13B-Instruct},
    year      = {2023},
    url       = {https://huggingface.co/pfnet/plamo-13b-instruct},
    urldate   = {2023-10-26}
}
```

## References
```tex
@article{touvron2023llama,
  title={LLaMA: Open and Efficient Foundation Language Models},
  author={Touvron, Hugo and Lavril, Thibaut and Izacard, Gautier and Martinet, Xavier and Lachaux, Marie-Anne and Lacroix, Timoth{\'e}e and Rozi{\`e}re, Baptiste and Goyal, Naman and Hambro, Eric and Azhar, Faisal and Rodriguez, Aurelien and Joulin, Armand and Grave, Edouard and Lample, Guillaume},
  journal={arXiv preprint arXiv:2302.13971},
  year={2023}
}
```