Text Generation
Transformers
Safetensors
Japanese
English
llama
conversational
text-generation-inference
Inference Endpoints
File size: 18,977 Bytes
38227c3
 
d132c0c
 
 
 
 
 
 
 
 
 
38227c3
 
 
 
20246bd
 
38227c3
20246bd
38227c3
 
 
 
 
 
 
 
 
20246bd
 
 
 
 
38227c3
 
 
 
 
20246bd
38227c3
 
 
 
 
 
 
 
 
d132c0c
 
20246bd
d132c0c
20246bd
 
 
d132c0c
 
 
94e91ba
d132c0c
 
20246bd
d132c0c
20246bd
d132c0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20246bd
d132c0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20246bd
 
 
d132c0c
 
20246bd
d132c0c
 
 
 
 
20246bd
 
 
 
 
d132c0c
20246bd
d132c0c
94e91ba
20246bd
 
 
 
 
 
d132c0c
 
 
20246bd
d132c0c
 
 
20246bd
d132c0c
 
 
 
 
20246bd
 
 
d132c0c
 
 
 
20246bd
d132c0c
 
 
 
 
 
 
 
 
e928c22
d132c0c
 
 
e928c22
 
d132c0c
 
 
e928c22
 
 
 
 
 
 
 
 
d132c0c
 
e928c22
d132c0c
e928c22
 
d132c0c
 
 
 
 
 
 
e928c22
20246bd
 
 
 
e928c22
d132c0c
 
 
e928c22
 
d132c0c
20246bd
 
 
d132c0c
 
20246bd
e928c22
20246bd
 
e928c22
d132c0c
20246bd
 
 
 
 
d132c0c
 
20246bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38227c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20246bd
 
 
38227c3
 
 
20246bd
38227c3
20246bd
 
 
 
38227c3
20246bd
 
 
 
 
 
38227c3
20246bd
 
38227c3
20246bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38227c3
20246bd
 
 
 
38227c3
20246bd
 
 
38227c3
20246bd
 
38227c3
20246bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38227c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20246bd
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
---
library_name: transformers
license: cc-by-4.0
datasets:
- DeL-TaiseiOzaki/Tengentoppa-sft-v1.0
- llm-jp/magpie-sft-v1.0
- ntotsuka123/clean3-ultraboros-20k-ja-filter
language:
- ja
- en
base_model:
- llm-jp/llm-jp-3-13b
---

# Model Card for Model ID

This is Full Parameter Fine Tuned model based on `llm-jp/llm-jp-3-13B`.
See the base details [here](https://huggingface.co/llm-jp/llm-jp-3-13b).

Made for the task of `elyza-tasks-100-TV` which Matsuo Lab made in a class.

## Model Details

### Model Description

<!-- Provide a longer summary of what this model is. -->

This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.

- **Developed by:** [Yuto-24](https://github.com/Yuto-24/)
- **Model type:** Text Generation
- **Language(s) (NLP):** Japanese, English
- **License:** CC-BY-4.0
- **Finetuned from model:** [llm-jp/llm-jp-3-13B](https://huggingface.co/llm-jp/llm-jp-3-13b)

### Model Sources [optional]

<!-- Provide the basic links for the model. -->

- **Repository:** coming soon...

## Uses

<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->

### Direct Use

<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->

```txt:requirements.txt
numpy
torch>=2.3.0
datasets
transformers>=4.40.1
accelerate>=0.29.3
flash-attn>=2.5.8
FlagEmbedding
```

~~~python
import torch
import numpy as np

from datasets import Dataset, load_dataset
from FlagEmbedding import BGEM3FlagModel
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    TextStreamer,
    BitsAndBytesConfig,
)

elyza_tasks_datasets = load_dataset("elyza/ELYZA-tasks-100")

model = BGEM3FlagModel("BAAI/bge-m3")
target_texts = elyza_tasks_datasets["test"]["input"].copy()
target_embeds = model.encode(target_texts)["dense_vecs"]


def retrieve(input_text):
    global target_embeds

    input_texts = [input_text]
    input_embeds = model.encode(input_texts)["dense_vecs"]

    # 類似度の計算
    similarity = input_embeds @ target_embeds.T
    most_similar_text = target_texts[np.argmax(similarity)]

    target_index = target_texts.index(most_similar_text)
    return target_index


class CallLLM:
    def __init__(self, model_name_or_path: str) -> None:
        self.model = AutoModelForCausalLM.from_pretrained(
            model_name_or_path,
            trust_remote_code=True,
            device_map="auto",
        ).eval()
        self.tokenizer = AutoTokenizer.from_pretrained(
            model_name_or_path,
            trust_remote_code=True,
        )
        self.streamer = TextStreamer(
            self.tokenizer,
        )
        self.call_type = None
        print(f"{self.model.device = }")

    def __call__(self, input_text: str, call_type: str = None, stream=False, **kwargs):
        self.call_type = call_type
        # print(f"Using call_type: {self.call_type}")

        call_type_dict = {
            "chat_template": self.__call_chat_template,
        }

        if self.call_type not in call_type_dict.keys():
            raise ValueError(
                f"Please set the call_type. You can select from {call_type_dict.keys()}"
            )
        output = call_type_dict[call_type](input_text.strip(), stream=stream, **kwargs)
        return output

    def merge_adapter(self, lora_adapter_path):
        # PEFTモデルとしてLoRAアダプターをベースモデルに結合
        self.model = PeftModel.from_pretrained(self.model, lora_adapter_path)
        self.model = self.model.merge_and_unload()

    def __call_chat_template(self, input_text: str = "", system_prompt: str = "あなたは、大塚商会の誠実で優秀なアシスタントです。", ** kwargs):
        prompt = []
        if system_prompt and system_prompt != "":
            prompt.append({"role": "system", "content": system_prompt})
        if input_text and input_text != "":
            prompt.append({"role": "user", "content": input_text})

        tokenized_input = self.tokenizer.apply_chat_template(
            prompt,
            return_tensors="pt",
        )

        output = self.__inference(tokenized_input, **kwargs)
        return output

        output = self.__inference(tokenized_input, **kwargs)
        return output

    def __inference(self, tokenized_input, stream: bool, **kwargs):
        tokenized_input = tokenized_input.to(self.model.device)
        attention_mask = torch.ones_like(tokenized_input)

        default_inference_params = {
            "attention_mask": attention_mask,
            "max_new_tokens": 512,
            "do_sample": False,
            "repetition_penalty": 1.2,
            "eos_token_id": self.tokenizer.eos_token_id,
            "pad_token_id": self.tokenizer.eos_token_id,
            # "eos_token_id": self.tokenizer.encode("<|im_end|>"),
        }

        inference_params = default_inference_params.copy()
        inference_params.update(**kwargs)
        if stream:
            inference_params.update(streamer=self.streamer)

        # Inference
        with torch.no_grad():
            outputs = self.model.generate(
                tokenized_input,
                **inference_params,
            )[0]
        output = self.tokenizer.decode(
            outputs[tokenized_input.size(1):],
            skip_special_tokens=True,
        )
        return output

model_path_or_id = "Yuto-24/llm-jp-3-13B-Tengentoppa_magpie"

# Loading model here.
llm = CallLLM(model_path_or_id)

SYSTEM_PROMPT = """
# あなたが必ず従うべき事項

## 役割

あなたは誠実で優秀なアシスタントです。
質問に対し、簡潔に答えます。
ハルシネーションをしません。
必ず正しい情報のみを答えます。

## 指示

- 評価観点に沿った出力を作成します。
- ユーザから特別な指示が与えられている場合には、必ず従います。
- 具体例には評価観点が含まれていますが、あなたが考える「出力」のみを回答してください。
- 評価観点は、人間があなたの出力を評価するために利用します。
- 論理的にステップバイステップで考えてください。

## 具体例

```markdown
{examples}
```
""".strip()

EXAMPLE_TEMPLATE = """
### 入力

{dataset_input}

### 評価観点

{dataset_eval_aspect}

### 出力

{dataset_answer}
""".strip()


# タスクとなるデータの読み込み
# omnicampusの開発環境では、左にタスクのjsonlをドラッグアンドドロップしてから実行

import os
import json

datasets = []
with open(f"{os.path.dirname(os.path.abspath('**file**'))}/workspace/elyza-tasks-100-TV_0.jsonl", "r") as f:
    item = ""
    for line in f:
        line = line.strip()
        item += line
        if item.endswith("}"):
            datasets.append(json.loads(item))
            item = ""

# モデルによるタスクの推論。
import re
from tqdm import tqdm

results = []
n = 2


for data in tqdm(datasets, smoothing=0.0):
    input_text = data["input"]
    dataset_index_list = retrieve(input_text, n)

    examples = ""
    for dataset_index in dataset_index_list:
        examples += EXAMPLE_TEMPLATE.format(
            dataset_input=elyza_tasks_datasets["test"]["input"][dataset_index].strip(),
            dataset_eval_aspect=elyza_tasks_datasets["test"]["eval_aspect"][dataset_index].strip(),
            dataset_answer=elyza_tasks_datasets["test"]["output"][dataset_index].strip(),
        )

    system_prompt = SYSTEM_PROMPT.format(
        examples=examples.strip(),
    )
    # print(examples)
    # print(input_text)

    output = llm(input_text=input_text,
                 system_prompt=system_prompt,
                 call_type="chat_template",
                 repetition_penalty=1.15,
                 # stream=True,
                 ).strip()
    # print("-----------------------------------------------------------------------------------------------------------------------------------")
    print(output.strip())
    print("===================================================================================================================================")
    print(re.sub(r"^[\s\S]*?### 出力", "", re.sub(r"^[\s\S]*?\*\*出力\*\*:", "", output)).strip())
    print("-----------------------------------------------------------------------------------------------------------------------------------")

    results.append({
        "task_id": data["task_id"],
        "input": input_text,
        "output_org": output.strip(),
        "output": re.sub(r"^[\s\S]*?### 出力", "", output).strip(),
        "elyza_tasks_id": dataset_index,
        "dataset_input": elyza_tasks_datasets["test"]["input"][dataset_index],
        "dataset_eval_aspect": elyza_tasks_datasets["test"]["eval_aspect"][dataset_index],
        "dataset_answer": elyza_tasks_datasets["test"]["output"][dataset_index],
    })

# results にタスクの解答が入っている

from pprint import pprint
import pandas as pd


# 最大表示「列」数の指定
pd.set_option("display.max_columns", 0)
# 最大表示「行」数の指定
pd.set_option("display.max_rows", 100)
pd.set_option("display.max_colwidth", 550)


json4df = {
    "task_id": [],
    "input": [],
    "output": [],
    "output_org": [],
    # "elyza_tasks_id": [],
    # "dataset_input": [],
    # "dataset_eval_aspect": [],
    # "dataset_answer": [],
}

for result in results:
    json4df["task_id"].append(result["task_id"])
    json4df["input"].append(result["input"])
    json4df["output_org"].append(result["output_org"])
    json4df["output"].append(result["output"])

JSON_FILE_NAME = "llm-jp-3-13B-Tengentoppa-FPFT-magpie-FPFT-elyza-RAG_v2"

result4out = results.copy()
results


# 本コードではinputとeval_aspectも含んでいますが、なくても問題ありません。
# 必須なのはtask_idとoutputとなります。

import re
import sys
from os.path import dirname, abspath, join, isfile


result4out = results.copy()


WD = dirname(abspath("__file__"))
json_dir = join(
    WD,
    "..",
    "jsonl",
)


if JSON_FILE_NAME != "":
    file_path = join(json_dir, f"{JSON_FILE_NAME}.jsonl")
else:
    jsonl_id = re.sub(".*/", "", merged_model_path)
    file_path = join(json_dir, f"{jsonl_id}-outputs.jsonl")

assert not isfile(file_path), f"Error: File `{file_path}` is already exist."

with open(file_path, "w", encoding="utf-8") as f:
    for result in result4out:
        result = {k: v for k, v in result.items() if k != "elyza_tasks_id" and k != "dataset_input" and k !=
                  "dataset_eval_aspect" and k != "dataset_answer"}
        json.dump(
            result, f, ensure_ascii=False
        )  # ensure_ascii=False for handling non-ASCII characters
        f.write("\n")


~~~

### Downstream Use [optional]

<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->

[More Information Needed]

### Out-of-Scope Use

<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->

[More Information Needed]

## Bias, Risks, and Limitations

<!-- This section is meant to convey both technical and sociotechnical limitations. -->

[More Information Needed]

### Recommendations

<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->

Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.

## How to Get Started with the Model

Use the code below to get started with the model.

[More Information Needed]

## Training Details

### Training Data

<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->

- [DeL-TaiseiOzaki/Tengentoppa-sft-v1.0](https://huggingface.co/datasets/DeL-TaiseiOzaki/Tengentoppa-sft-v1.0)
- [llm-jp/magpie-sft-v1.0](https://huggingface.co/datasets/llm-jp/magpie-sft-v1.0)
- [ntotsuka123/clean3-ultraboros-20k-ja-filter](https://huggingface.co/datasets/ntotsuka123/clean3-ultraboros-20k-ja-filter)

### Training Procedure

using axolotl and yaml below.

```yaml: For the first training
base_model: llm-jp/llm-jp-3-13b
model_type: AutoModelForCausalLM
tokenizer_type: AutoTokenizer

load_in_8bit: false
load_in_4bit: false
strict: false

# domain_yyyymmdd
output_dir: outputs/matsuo/llm-jp/3/13B/FPFT_20241213

chat_template: chatml
default_system_message: あなたは、大塚商会の誠実で優秀なアシスタントです。

shuffle_merged_datasets: true
datasets:
  # # General
  # - path: data/general/magpie-sft-v1.0.jsonl
  #   ds_type: json
  #   type: chat_template
  #   chat_template: chatml
  #   field_messages: conversations
  #   message_field_role: role
  #   message_field_content: content
  #   roles:
  #     user:
  #       - user
  #     assistant:
  #       - assistant
  #     system:
  #       - system
  - path: data/general/Tengentoppa-sft-v1.0.jsonl
    ds_type: json
    type: alpaca
  # - path: data/general/clean3-ultraboros-20k-ja-filter_train.jsonl
  #   ds_type: json
  #   type: chat_template
  #   # chat_template: chatml
  #   field_messages: conversations
  #   message_field_role: role
  #   message_field_content: value
  #   roles:
  #     user:
  #       - human
  #     assistant:
  #       - gpt
  #     system:
  #       - system
  #   train_on_eos: turn

val_set_size: 0.05

sequence_len: 4096
sample_packing: true
pad_to_sequence_len: true

gradient_accumulation_steps: 4
micro_batch_size: 1
num_epochs: 2
optimizer: paged_adamw_8bit
lr_scheduler: cosine
learning_rate: 0.00002

train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: true

gradient_checkpointing: true
gradient_checkpointing_kwargs:
  use_reentrant: false
early_stopping_patience:
resume_from_checkpoint:
logging_steps: 1
xformers_attention:
flash_attention: true

# warmup_steps: 100
warmup_ratio: 0.1
evals_per_epoch: 1
eval_table_size:
saves_per_epoch: 1
debug:
deepspeed: deepspeed_configs/zero3.json
weight_decay: 0.0
fsdp:
fsdp_config:
special_tokens:
  eos_token: <|im_end|>
```

```yaml: For the second training
base_model: outputs/matsuo/llm-jp/3/13B/FPFT_20241213
model_type: AutoModelForCausalLM
tokenizer_type: AutoTokenizer

load_in_8bit: false
load_in_4bit: false
strict: false

# domain_yyyymmdd
output_dir: outputs/matsuo/llm-jp/3/13B/FPFT_20241215

chat_template: chatml
default_system_message: あなたは、大塚商会の誠実で優秀なアシスタントです。

shuffle_merged_datasets: true
datasets:
  - path: data/general/magpie-sft-v1.0.jsonl
    ds_type: json
    type: chat_template
    chat_template: chatml
    field_messages: conversations
    message_field_role: role
    message_field_content: content
    roles:
      user:
        - user
      assistant:
        - assistant
      system:
        - system
  # - path: data/general/Tengentoppa-sft-v1.0.jsonl
  #   ds_type: json
  #   type: alpaca
  - path: data/general/clean3-ultraboros-20k-ja-filter_train.jsonl
    ds_type: json
    type: chat_template
    chat_template: chatml
    field_messages: conversations
    message_field_role: role
    message_field_content: value
    roles:
      user:
        - human
      assistant:
        - gpt
      system:
        - system
    ## NOTE: Leaving the below empty will default to using the simple legacy tokenization strategy where only last message is trained on.
    # Optional[List[str]]. Roles to train on. The tokens from these roles will be considered for the loss.
    roles_to_train: ["gpt", "assistant"]
    # Optional[str]. Which EOS tokens to train on in the conversation. Possible values are:
    # - all: train on all EOS tokens
    # - turn: train on the EOS token at the end of each trainable turn
    # - last: train on the last EOS token in the conversation
    train_on_eos: last

val_set_size: 0.05

sequence_len: 4096
sample_packing: true
pad_to_sequence_len: true

gradient_accumulation_steps: 4
micro_batch_size: 1
num_epochs: 2
optimizer: paged_adamw_8bit
lr_scheduler: cosine
learning_rate: 0.00002

train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: true

gradient_checkpointing: true
gradient_checkpointing_kwargs:
  use_reentrant: false
early_stopping_patience:
resume_from_checkpoint:
logging_steps: 1
xformers_attention:
flash_attention: true

# warmup_steps: 100
warmup_ratio: 0.1
evals_per_epoch: 1
eval_table_size:
saves_per_epoch: 1
debug:
deepspeed: deepspeed_configs/zero3.json
weight_decay: 0.0
fsdp:
fsdp_config:
special_tokens:
  eos_token: <|im_end|>
```

## Evaluation

<!-- This section describes the evaluation protocols and provides the results. -->

### Testing Data, Factors & Metrics

#### Testing Data

<!-- This should link to a Dataset Card if possible. -->

[More Information Needed]

#### Factors

<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->

[More Information Needed]

#### Metrics

<!-- These are the evaluation metrics being used, ideally with a description of why. -->

[More Information Needed]

### Results

[More Information Needed]

#### Summary

## Model Examination [optional]

<!-- Relevant interpretability work for the model goes here -->

[More Information Needed]

## Environmental Impact

<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->

Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).

- **Hardware Type:** [More Information Needed]
- **Hours used:** [More Information Needed]
- **Cloud Provider:** [More Information Needed]
- **Compute Region:** [More Information Needed]
- **Carbon Emitted:** [More Information Needed]

## Technical Specifications [optional]

### Model Architecture and Objective

[More Information Needed]

### Compute Infrastructure

[More Information Needed]

#### Hardware

[More Information Needed]

#### Software

[More Information Needed]

## Citation [optional]

<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->

**BibTeX:**

[More Information Needed]

**APA:**

[More Information Needed]

## Glossary [optional]

<!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->

[More Information Needed]

## More Information [optional]

[More Information Needed]

## Model Card Authors [optional]

[More Information Needed]

## Model Card Contact

[More Information Needed]