PolyOpus / README.md
hkqiu's picture
Update README.md
6efe172 verified
|
Raw History Blame Contribute Delete
2.43 kB
metadata
language:
  - en
  - zh
library_name: transformers
pipeline_tag: text-generation
base_model: deepseek-ai/deepseek-llm-7b-chat
tags:
  - chemistry
  - polymers
  - materials-science
  - text-generation

PolyOpus

PolyOpus is a polymer-specialized language model built by supervised fine-tuning of DeepSeek-LLM-7B-Chat. It serves as the specialist model in the PolySea framework.

Supported tasks

  • Predict glass-transition temperature, crystalline band gap and atomization energy.
  • Classify polyimide heat resistance using Tg-derived categories.
  • Generate polymer structures for a specified band-gap target.
  • Answer polymer-science questions in English or Chinese.

For property prediction, provide the requested property and a polymer repeat-unit SMILES. The * symbols indicate polymerization attachment points.

Model details

  • Approximately 7B parameters; LlamaForCausalLM architecture.
  • A complete merged FP16 checkpoint in three Safetensors shards. No separate LoRA adapter is required for inference.
  • A 4,096-token context window, with the tokenizer and chat template included.

Quick start

Install torch, transformers and accelerate, then run:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "hkqiu/PolyOpus"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id, torch_dtype=torch.float16, device_map="auto"
)

messages = [{
    "role": "user",
    "content": "Predict the Tg of the following SMILES: *CC*"
}]
prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
inputs = tokenizer(
    prompt, add_special_tokens=False, return_tensors="pt"
).to(model.device)

with torch.inference_mode():
    outputs = model.generate(
        **inputs, max_new_tokens=128, do_sample=True,
        temperature=0.7, top_p=0.95,
        pad_token_id=tokenizer.eos_token_id,
    )
answer = outputs[0, inputs["input_ids"].shape[1]:]
print(tokenizer.decode(answer, skip_special_tokens=True))

Predictions and generated structures require independent validation before use in experiments or materials selection.

Links