条件付きシーケンスモデリングタスクとして回帰を再定式化するマルチタスク変圧器。これにより、回帰をプロパティ駆動型の条件生成とシームレスに統合する二分言語モデルが得られます。

このレポは開発コードが含まれています。 Nature Machine Intelligenceの論文を読んでください。
?シンプルなUIを備えたグラデーションデモは、ハギングフェイススペースで利用できます
回帰変圧器は、GT4SDライブラリに実装されています。 GT4SDを介して、いくつかの事前に抑制された回帰トランスフォーマーを使用することは、数行のコードの問題です。 RTモデルの微調整(またはゼロからトレーニング)し、GT4SDモデルのハブに共有して展開することを実行している実行の完全なチュートリアルは、ここにあります。
たとえば、GT4SDを介して、特にQEDとESOL(水溶解度)に示すように、いくつかの特性を備えた小分子で前処理されたRTを使用できます。 RTのいくつかのマルチプロパティバリアントもあります。たとえば、LOGPと合成化可能性(別名SCSCORE)で共同でトレーニングされたモデル。タンパク質言語モデリングの場合、テープベンチマークからペプチド安定性データセットでトレーニングされたRTも見つかります。要するに、GT4SDは以前のRTモデルを提供します。
qed 、 esol 、 crippen_logp )または複数の( logp_and_synthesizability 、 cosmo_acdl 、 pfas )プロパティ。これらのモデルはすべて、笑顔を使用するcrippen_logp以外のセルフィーを使用しています。stabilityuspto (反応笑顔を使用)rop_catalystとblock_copolymerはどちらもPark et al。、(2023; Nature Communications )で説明されています。 rop_catalyst従来のセルフィーを使用していますが、 block_copolymerモデルはPark et al。、(2023; Nature Communications )で説明されているCMDLと呼ばれる新しいポリマー言語を使用しています。GT4SDでは、分子を溶解度に向けて適応させるためのおもちゃのユーザーケースを備えたJupyterノートブックも提供されています。 GT4SDを使用する場合、次のような分子を生成できます。
from gt4sd . algorithms . conditional_generation . regression_transformer import (
RegressionTransformer , RegressionTransformerMolecules
)
buturon = "CC(C#C)N(C)C(=O)NC1=CC=C(Cl)C=C1"
target_esol = - 3.53
config = RegressionTransformerMolecules (
algorithm_version = "solubility" ,
search = "sample" ,
temperature = 2 ,
tolerance = 5 ,
sampling_wrapper = {
'property_goal' : { '<esol>' : target_esol },
'fraction_to_mask' : 0.2
}
)
esol_generator = RegressionTransformer ( configuration = config , target = buturon )
generations = list ( esol_generator . sample ( 8 )) Buturon周辺の局所化学空間の溶解度を探ります。プロパティプライマーを変更すると、次のようなものを取得できます。 
これは主に、論文の結果を再現または拡張することを目的としています。
conda env create -f conda.yml
conda activate terminator
pip install -e .モデルのトレーニングに使用される処理されたデータは、ボックス経由で使用できます。
データをダウンロードして、データをトレーニングおよびテストすることを指してトレーニングを開始できます。
python scripts/run_language_modeling.py --output_dir rt_example
--config_name configs/rt_small.json --tokenizer_name ./vocabs/smallmolecules.txt
--do_train --do_eval --learning_rate 1e-4 --num_train_epochs 5 --save_total_limit 2
--save_steps 500 --per_gpu_train_batch_size 16 --evaluate_during_training --eval_steps 5
--eval_data_file ./examples/qed_property_example.txt --train_data_file ./examples/qed_property_example.txt
--line_by_line --block_size 510 --seed 42 --logging_steps 100 --eval_accumulation_steps 2
--training_config_path training_configs/qed_alternated_cc.jsontraining_config_path引数は、トレーニング体制を指定するファイルを指します。これはオプションであり、引数が与えられていない場合、デフォルトでは、均等な確率でどこにでもマスクするバニラPLMトレーニングにデフォルトです(初期の事前トレーニングのみに推奨されます)。洗練された例については、 training_configsフォルダーを参照してください。
また、 vocabsフォルダーには、小分子、タンパク質、化学反応に関するトレーニングのための語彙ファイルが含まれていることに注意してください。
模範的なモデル構成(ヘッド、レイヤーの数)は、構成フォルダーにあります。
たとえば、QEDタスクでトレーニングされたモデルを評価するには、以下を実行します。
python scripts/eval_language_modeling.py --output_dir path_to_model
--eval_file ./examples/qed_property_example.txt --eval_accumulation_steps 2 --param_path configs/qed_eval.json前払いされたモデルは、GT4SDモデルハブを介して利用できます。合計9つのモデルがあり、ハギングフェイススペースを介して使用できます。出版物の一部であるモデルは、上記のボックスフォルダーからも入手できます。
QEDタスクのカスタムデータをRT互換形式で生成するには、スクリプト/Generate_Example_Data.pyを実行し、最初の列にSMILESの.smiファイルを指します。
python scripts/generate_example_data.py examples/example.smi examples/qed_property_example.txtユーザー定義のプロパティについては、ファイルを調整するか、問題を開いてください。
データセットに新しい語彙を作成する必要がある場合は、スクリプト/create_vocabulary.pyを使用できます。また、語彙ファイルの上部に特別なトークンが自動的に追加されます。
python scripts/create_vocabulary.py examples/qed_property_example.txt examples/vocab.txtこの時点で、語彙ファイルを含むフォルダーを使用して、 ExpressionBertTokenizerと互換性のあるトークンザーをロードできます。
> >> from terminator . tokenization import ExpressionBertTokenizer
> >> tokenizer = ExpressionBertTokenizer . from_pretrained ( 'examples' )
> >> text = '<qed>0.3936|CBr'
> >> tokens = tokenizer . tokenize ( text )
> >> print ( tokens )
[ '<qed>' , '_0_0_' , '_._' , '_3_-1_' , '_9_-2_' , '_3_-3_' , '_6_-4_' , '|' , 'C' , 'Br' ]
> >> token_indexes = tokenizer . convert_tokens_to_ids ( tokenizer . tokenize ( text ))
> >> print ( token_indexes )
[ 16 , 17 , 18 , 28 , 45 , 34 , 35 , 19 , 15 , 63 ]
> >> tokenizer . build_inputs_with_special_tokens ( token_indexes )
[ 12 , 16 , 17 , 18 , 28 , 45 , 34 , 35 , 19 , 15 , 63 , 13 ]回帰変圧器を使用する場合は、引用してください。
@article { born2023regression ,
title = { Regression Transformer enables concurrent sequence regression and generation for molecular language modelling } ,
author = { Born, Jannis and Manica, Matteo } ,
journal = { Nature Machine Intelligence } ,
volume = { 5 } ,
number = { 4 } ,
pages = { 432--444 } ,
year = { 2023 } ,
publisher = { Nature Publishing Group UK London }
}