File size: 12,354 Bytes
9dfeb92 |
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 |
from typing import Any
from typing import Dict
from typing import List
def report_gpu_usage() -> str:
import os
return os.popen("nvidia-smi").read()
class EndpointHandler:
def __init__(self, path=""):
import torch
from transformers import AutoModelForSeq2SeqLM
from transformers import AutoTokenizer
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
model_kwargs: dict[str, any] = dict()
if torch.cuda.is_available():
model_kwargs["load_in_8bit"] = True
model_kwargs["torch_dtype"] = torch.bfloat16
model_kwargs["device_map"] = "auto"
model_kwargs["low_cpu_mem_usage"] = True
self.model = AutoModelForSeq2SeqLM.from_pretrained(path, **model_kwargs)
self.tokenizer = AutoTokenizer.from_pretrained(path)
self.device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Loaded model {path} to {self.device}")
def __call__(self, data: Dict[str, Any]) -> List[Dict[str, any]]:
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
inputs = data.pop("inputs", data)
input_ids = self.tokenizer(inputs, return_tensors="pt").input_ids.to(self.device)
parameters = data.pop("parameters", None)
if parameters is None:
parameters = dict()
with BlockTimer() as timer:
outputs = self.model.generate(input_ids, **parameters)
print(f"Inference elapsed: {round(timer.duration, 2)}")
return_value: List[Dict[str, any]] = list()
# postprocess the prediction
gpu_info = report_gpu_usage()
for output in outputs:
prediction = self.tokenizer.decode(output, skip_special_tokens=True)
entry = {"generated_text": prediction, "elapsed": timer.duration}
if gpu_info:
entry["gpu_info"] = gpu_info
gpu_info = None
return_value.append(entry)
return return_value
class BlockTimer(object):
def __enter__(self):
import time
self.start = time.perf_counter()
return self
def __exit__(self, typ, value, traceback):
import time
self.duration = time.perf_counter() - self.start
def _force_not_available() -> bool:
return False
def test() -> None:
import textwrap
# torch.cuda.is_available = _force_not_available
handler = EndpointHandler(path="bigscience/mt0-xl")
parameters: dict[str, any] = {"max_length": 256, "min_length": 1, #
"no_repeat_ngram_size": 3, #
# "encoder_no_repeat_ngram_size": 7, #
"repetition_penalty": 3.5, #
# "num_beams": 1, #
# "top_p": 0.7, # 0.3, 0.7
"do_sample": True,
"temperature": 0.1,
"early_stopping": True, } # parameters for text generation
payload = {"inputs": f"{wall_of_text()}", "parameters": parameters}
results = handler.__call__(payload)
for entry in results[0].items():
print()
print(f"=== {entry[0]}")
if entry[0] == "gpu_info":
gpu_info_lines = entry[1].split("\n")
for line in gpu_info_lines:
if "Default |" in line:
print(line)
else:
print(textwrap.fill(str(
entry[1]), 140, drop_whitespace=False, replace_whitespace=False))
def wall_of_text() -> str:
return """
Write a journal article headline for the following.
The present invention relates to compositions and methods for the treatment of the
Charcot-Marie-Tooth disease and related disorders. Charcot-Marie-Tooth disease (“CMT
Mining
of publicly available data, describing molecular mechanisms and pathological
manifestations
of the CMT1A disease, allowed us to prioritize a few functional cellular
modules-transcriptional regulation of PMP22 gene, PMP22 protein folding/degradation,
Schwann cell proliferation and apoptosis, death of neurons, extra-cellular matrix
deposition
and remodelling, immune response-as potential legitimate targets for CMT-relevant
therapeutic interventions. The combined impact of these deregulated functional modules on
onset and progression of pathological manifestations of Charcot-Marie-Tooth justifies a
potential efficacy of combinatorial CMT treatment. International patent application No.
PCT/EP2008/066457 describes a method of identifying drug candidates for the treatment of
the
Charcot-Marie-Tooth disease by building a dynamic model of the pathology and targeting
functional cellular pathways which are relevant in the regulation of CMT disease.
International patent application No. PCT/EP2008/066468 describes compositions for the
treatment of the Charcot-Marie-Tooth disease which comprise at least two compounds
selected
from the group of multiple drug candidates. The purpose of the present invention is to
provide new therapeutic combinations for treating CMT and related disorders. The invention
thus relates to compositions and methods for treating CMT and related disorders,
in particular toxic or traumatic neuropathy and amyotrophic lateral sclerosis,
using particular drug combinations. An object of this invention more specifically
relates to
a composition comprising baclofen, sorbitol and a compound selected from pilocarpine,
methimazole, mifepristone, naltrexone, rapamycin, flurbiprofen and ketoprofen, salts or
prodrugs thereof, for simultaneous, separate or sequential administration to a mammalian
subject. A particular object of the present invention relates to a composition comprising
baclofen, sorbitol and naltrexone, for simultaneous, separate or sequential administration
to a mammalian subject. Another object of the invention relates to a composition
comprising
(a) rapamycin, (b) mifepristone or naltrexone, and © a PMP22 modulator, for simultaneous,
separate or sequential administration to a mammalian subject. In a particular embodiment,
the PMP22 modulator is selected from acetazolamide, albuterol, amiloride,
aminoglutethimide,
amiodarone, aztreonam, baclofen, balsalazide, betaine, bethanechol, bicalutamide,
bromocriptine, bumetanide, buspirone, carbachol, carbamazepine, carbimazole, cevimeline,
ciprofloxacin, clonidine, curcumin, cyclosporine A, diazepam, diclofenac, dinoprostone,
disulfiram, D-sorbitol, dutasteride, estradiol, exemestane, felbamate, fenofibrate,
finasteride, flumazenil, flunitrazepam, flurbiprofen, furosemide, gabapentingabapentin,
galantamine, haloperidol, ibuprofen, isoproterenol, ketoconazole, ketoprofen, L-carnitine,
liothyronine (T3), lithium, losartan, loxapine, meloxicam, metaproterenol, metaraminol,
metformin, methacholine, methimazole, methylergonovine, metoprolol, metyrapone,
miconazole,
mifepristone, nadolol, naloxone, naltrexone; norfloxacin, pentazocine, phenoxybenzamine,
phenylbutyrate, pilocarpine, pioglitazone, prazosin, propylthiouracil, raloxifene,
rapamycin, rifampin, simvastatin, spironolactone, tacrolimus, tamoxifen, trehalose,
trilostane, valproic acid, salts or prodrugs thereof. 1. A method of improving nerve
regeneration in a human subject suffering from amyotrophic lateral sclerosis,
or a neuropathy selected from an idiopathic neuropathy, diabetic neuropathy,
a toxic neuropathy, a neuropathy induced by a drug treatment, a neuropathy provoked by
HIV,
a neuropathy provoked by radiation, a neuropathy provoked by heavy metals, a neuropathy
provoked by vitamin deficiency states, or a traumatic neuropathy, comprising administering
to the human subject an amount of a composition effective to improve nerve regeneration;
and
wherein the composition comprises baclofen or a pharmaceutically acceptable salt thereof
in
an amount from 1 to 300 mg/kg of the human subject per day; D-sorbitol or a
pharmaceutically
acceptable salt thereof; and naltrexone or a pharmaceutically acceptable salt thereof in
an
amount from 1 to 100 mg/kg of the human subject per day. 2. The method of claim 1,
wherein the composition further comprises a pharmaceutically suitable excipient or
carrier.
3. The method of claim 2, wherein the composition is formulated with a drug eluting
polymer,
a biomolecule, a micelle or liposome-forming lipids or oil in water emulsions,
or pegylated
or solid nanoparticles or microparticles for oral or parenteral or intrathecal
administration. 4. The method of claim 1, wherein the subject suffers from a traumatic
neuropathy arising from brain injury, spinal cord injury, or an injury to peripheral
nerves.
5. The method of claim 1, wherein the D-sorbitol or a pharmaceutically acceptable salt
thereof is D-sorbitol. 6. The method of claim 1, wherein the composition is formulated for
oral administration. 7. The method of claim 6, wherein the composition is a liquid
formulation. 8. The method of claim 1, wherein baclofen or a pharmaceutically acceptable
salt thereof, D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone
or a
pharmaceutically acceptable salt thereof are the sole active ingredients. 9. The method of
claim 1, comprising administering to the human subject baclofen or a pharmaceutically
acceptable salt thereof in an amount from 10 to 200 mg/kg of the human subject per day and
naltrexone or a pharmaceutically acceptable salt thereof in an amount from 1 to 50 mg/kg
of
the human subject per day. 10. The method of claim 1, comprising administering to the
human
subject baclofen or a pharmaceutically acceptable salt thereof in an amount from 10 to 200
mg/kg of the human subject per day and naltrexone or a pharmaceutically acceptable salt
thereof in an amount from 1 to 50 mg/kg of the human subject per day. 11. The method of
claim 1, comprising administering to the human subject baclofen or a pharmaceutically
acceptable salt thereof in an amount from 60 mg to 18 mg per day and naltrexone or a
pharmaceutically acceptable salt thereof in an amount from 60 mg to 6 mg per day. 12. The
method of claim 1, comprising administering to the human subject baclofen or a
pharmaceutically acceptable salt thereof in an amount from 60 mg to 12 mg per day and
naltrexone or a pharmaceutically acceptable salt thereof in an amount from 60 mg to 3 mg
per
day. 13. The method of claim 10, wherein baclofen or a pharmaceutically acceptable salt
thereof, D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone or a
pharmaceutically acceptable salt thereof are administered orally to the human subject. 14.
The method of claim 10, wherein baclofen or a pharmaceutically acceptable salt thereof,
D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone or a
pharmaceutically acceptable salt thereof are administered separately to the human subject.
15. The method of claim 13, wherein baclofen or a pharmaceutically acceptable salt
thereof,
D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone or a
pharmaceutically acceptable salt thereof are formulated in a liquid formulation. 16. The
method of claim 15, wherein baclofen or a pharmaceutically acceptable salt thereof,
D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone or a
pharmaceutically acceptable salt thereof are administered to the human subject in divided
doses. 17. The method of claim 15, wherein baclofen or a pharmaceutically acceptable salt
thereof, D-sorbitol or a pharmaceutically acceptable salt thereof, and naltrexone or a
pharmaceutically acceptable salt thereof are administered to the human subject in divided
doses two times daily.
""".replace("\n", " ")
if __name__ == '__main__':
test()
|