Spaces:
Running
Running
File size: 6,122 Bytes
23df63d 953d63d 61d6422 23df63d 0fbc2ee 23df63d |
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 123 124 125 126 127 128 129 130 |
---
extra_gated_prompt: {terms_of_use}
extra_gated_heading: Acknowledge License and Additional Terms of Use to accept the repository
extra_gated_button_content: Acknowledge License and Additional Terms of Use
license: apache-2.0
license_link: LICENSE
language:
- ja
- en
base_model:
- {base_model_id}
---
# {model_name}
本モデルは、国立研究開発法人 新エネルギー・産業技術総合開発機構(NEDO)の公募「[ポスト5G情報通信システム基盤強化研究開発事業/①ポスト5G情報通信システムの開発](https://www.nedo.go.jp/activities/ZZJP_100172.html)」および経済産業省が主催する「[Generative AI Accelerator Challenge(GENIAC)プロジェクト](https://www.meti.go.jp/policy/mono_info_service/geniac/index.html)」に採択された当富士通株式会社の提案事業[「論理推論を可能とする大規模言語モデルの研究開発」](https://pr.fujitsu.com/jp/news/2024/05/17.html)中に開発した、ナレッジグラフの生成/推論に特化した大規模言語モデル(LLM)の1つです。
同提案事業中に開発したモデルは、以下の表に一覧しています。
各モデルの評価結果や開発内容については、[富士通研究所の技術ブログ](https://blog.fltech.dev/entry/2024/10/15/Fujitsu-LLM-KG-ja)に詳細がありますので是非ご覧ください。
## Model Index
|モデル|名称|概要|
|---|---|---|
|[Fujitsu-LLM-KG-8x7B_cpt](https://huggingface.co/Fujitsu-LLM-KG/Fujitsu-LLM-KG-8x7B_cpt/)|共通事前学習済みLLM|ナレッジグラフ対訳コーパスで継続事前学習したLLM。|
|[Fujitsu-LLM-KG-8x7B_inst-infer_v1](https://huggingface.co/Fujitsu-LLM-KG/Fujitsu-LLM-KG-8x7B_inst-infer_v1/)|ナレッジグラフ推論LLM ver.1|日本語のマルチホップQAタスクデータで指示学習したLLM。|
|[Fujitsu-LLM-KG-8x7B_inst-infer_v2](https://huggingface.co/Fujitsu-LLM-KG/Fujitsu-LLM-KG-8x7B_inst-infer_v2/)|ナレッジグラフ推論LLM ver.2|英語のマルチホップQAタスクデータで指示学習したLLM。|
|[Fujitsu-LLM-KG-8x7B_inst-gen_ja](https://huggingface.co/Fujitsu-LLM-KG/Fujitsu-LLM-KG-8x7B_inst-gen_ja/)|ナレッジグラフ生成LLM(日本語版)|日本語の文書レベル関係抽出タスクデータで指示学習したLLM。|
|[Fujitsu-LLM-KG-8x7B_inst-gen_en](https://huggingface.co/Fujitsu-LLM-KG/Fujitsu-LLM-KG-8x7B_inst-gen_en/)|ナレッジグラフ生成LLM(英語版)|英語の文書レベル関係抽出タスクデータで指示学習したLLM。|
## Model Details
* **Developed by**: [Fujitsu-LLM](https://huggingface.co/Fujitsu-LLM/)
* **Base Model**: [{base_model_id}](https://huggingface.co/{base_model_id})
* **Language(s)**: Japanese, English
* **Library**: [NVIDIA/NeMo](https://github.com/NVIDIA/NeMo)
* **License**: [Apache-2.0](./LICENSE)
## Model Performance
* [富士通研究所の技術ブログ](https://blog.fltech.dev/entry/2024/10/15/Fujitsu-LLM-KG-ja)をご参照ください。
## How to use
### Preparation
必要なPythonモジュールをインストールする。
```sh
# Tested with the following versions; transformers==4.48.1, torch==2.5.1, and accelerate==1.3.0.
$ pip install transformers torch accelerate
```
ユーティリティを定義する。
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
class Fujitsu_LLM_KG:
"""The Fujitsu-LLM-KG-8x7B model.
"""
def __init__(self, model_id: str, *, device_map: str = "auto") -> None:
"""Initializes the model and tokenizer.
"""
self.model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map=device_map,
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
)
self.tokenizer = AutoTokenizer.from_pretrained(model_id, padding_side="left")
self.tokenizer.pad_token = self.tokenizer.eos_token
def generate(self, prompt:str,
*,
max_new_tokens: int = 2048,
num_beams: int = 1,
) -> str:
"""Generate an answer.
"""
tokenized = self.tokenizer(prompt, return_tensors="pt", padding=True)
with torch.no_grad():
outputs = self.model.generate(
tokenized["input_ids"].to("cuda"),
attention_mask=tokenized["attention_mask"].to("cuda"),
pad_token_id=self.tokenizer.eos_token_id,
max_new_tokens=max_new_tokens,
do_sample=False,
num_beams=num_beams,
)
answer = self.tokenizer.decode(outputs[0], skip_special_tokens=True)[len(prompt):]
return answer
def extract_turtle(text: str, *, with_rationale = False) -> str:
"""Extracts the RDF Turtle part from the output text of the Fujitsu-LLM-KG-8x7B models.
"""
TOKENS = ["<", "rel:", "rdf:", "]"]
if with_rationale:
TOKENS.append("#@")
turtle = ""
for line in text.splitlines():
line_ = line.strip()
if line == "" or any(line_.startswith(c) for c in TOKENS):
if turtle:
turtle += "\n"
turtle += line
return turtle
```
モデルを読み込む。
```python
kgllm = Fujitsu_LLM_KG("Fujitsu-LLM-KG/{model_name}")
```
{how_to_use}
## Training Datasets
{train_datasets}
## License
{model_name}の利用規約(Terms of Use)は、[LICENSE](./LICENSE)ファイルに記載しております。
## Risks and Limitations
{model_name}を利用した処理結果には、虚偽、偏り、他者の権利を侵害する内容、利用者が期待する効果や有用性を満たさない内容が含まれる可能性があります。
## Acknowledgements
本モデルの開発は、NEDOが推進する「ポスト5G情報通信システム基盤強化研究開発事業/ポスト5G情報通信システムの開発」の助成を受けたものです。
## Authors
* 富士通株式会社
|