Views
No views yet
1!pip install vllm==0.6.4.post1 --force-reinstall
2
3import time
4import torch
5import transformers
6from transformers import (
7 AutoTokenizer,
8 AutoModelForCausalLM,
9)
10import vllm ### packaging==24.1にしないとエラーになる!! ###
11print(vllm.__version__)
12
13MAX_LENGTH = 1000
14MODEL_NAME = "bay-llm/gemma-9b-SFT-720-large-16bit" # コンペで提出したいモデルに適宜置換
15
16llm = vllm.LLM(
17 model=MODEL_NAME,
18 tensor_parallel_size=1,
19 gpu_memory_utilization=0.95,
20 trust_remote_code=True,
21 max_model_len=1024,
22
23)
24tokenizer = llm.get_tokenizer()
25
26# ELYZA-tasks-100-TVの読み込み。事前にファイルをアップロードしてください
27# データセットの読み込み。
28# omnicampusの開発環境では、左にタスクのjsonlをドラッグアンドドロップしてから実行。
29import json
30datasets = []
31with open("../elyza-tasks-100-TV_0.jsonl", "r") as f:
32 item = ""
33 for line in f:
34 line = line.strip()
35 item += line
36 if item.endswith("}"):
37 datasets.append(json.loads(item))
38 item = ""
39
40print(datasets[0])
41
42messages_list = [
43 [{"role": "user", "content": datasets[i]["input"]}] for i in range(len(datasets))
44]
45
46prompts = [line[0]["content"] for line in messages_list]
47prompt_token_ids = [tokenizer.apply_chat_template(messages, add_generation_prompt=True) for messages in messages_list]
48sampling_params = vllm.SamplingParams(
49 temperature=0.5,
50 max_tokens=512,
51)
52outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params)
53for prompt, response in zip(prompts, outputs):
54 print("prompt:", prompt)
55 print("output:", response.outputs[0].text.strip())
56 print("-"*80)
57
58import json
59data = [{
60 "task_id": i,
61 "input": prompts[i],
62 "output": outputs[i].outputs[0].text.strip()
63} for i in range(len(datasets))]
64file_path = 'submmit.jsonl'
65with open(file_path, 'w', encoding='utf-8') as file:
66 for entry in data:
67 json.dump(entry, file, ensure_ascii=False)
68 file.write('\n')
69