






"""simple docstring"""




def 							lowerCAmelCase			(   UpperCamelCase_:				str = "mytext.txt"  ,			UpperCamelCase_:				bool = False       )							->				None:







  '''simple docstring'''







  import socket

  _a					      =						12312  # Reserve a port for your service.
  _a					      =						socket.socket()  # Create a socket object
  _a					      =						socket.gethostname()  # Get local machine name
  sock.bind((host, port)       )  # Bind to the port
  sock.listen(5       )  # Now wait for client connection.

  print("Server listening...."       )

  while True:
    _a      ,						_a					      =						sock.accept()  # Establish connection with client.
    print(f'''Got connection from {addr}'''       )
    _a					      =						conn.recv(1024       )
    print(f'''Server received: {data = }'''       )

    with open(UpperCamelCase_  ,			"rb"       ) as in_file:
      _a					      =						in_file.read(1024       )
      while data:
        conn.send(UpperCamelCase_       )
        print(f'''Sent {data!r}'''       )
        _a					      =						in_file.read(1024       )

    print("Done sending"       )
    conn.close()
    if testing:  # Allow the test to complete
      break

  sock.shutdown(1       )
  sock.close()


if __name__ == "__main__":
     send_file()










"""simple docstring"""




import argparse
import time

import torch
import transformers
from measures_util import end_measure, log_measures, start_measure
from transformers import AutoConfig, AutoModelForCausalLM, AutoModelForSeqaSeqLM, AutoTokenizer

from accelerate.utils import compute_module_sizes


UpperCamelCase											=     {
    """gpt-j-6b""": {"""is_causal""": True, """model""": """sgugger/sharded-gpt-j-6B""", """tokenizer""": """EleutherAI/gpt-j-6B"""},
    """gpt-neox""": {"""is_causal""": True, """model""": """EleutherAI/gpt-neox-20b"""},
    """opt""": {"""is_causal""": True, """model""": """facebook/opt-30b"""},
    """T0pp""": {"""is_causal""": False, """model""": """bigscience/T0pp""", """model_revision""": """sharded"""},
}

UpperCamelCase											=     [
    """Hello, my name is""",
    """Are unicorns real? Unicorns are""",
    """For the first time in several years,""",
    """My name is Julien and I am""",
    """The goal of life is""",
    """Whenever I'm sad, I like to""",
]






def 							lowerCAmelCase			(   )							->				Optional[int]:







  '''simple docstring'''







  _a					      =						argparse.ArgumentParser(description="Run and time generations on a big model using Accelerate."       )
  parser.add_argument("model_name"  ,			type=UpperCamelCase_  ,			default=UpperCamelCase_  ,			help="The name of the model to try."       )
  parser.add_argument(
      "--tokenizer_name"  ,			type=UpperCamelCase_  ,			default=UpperCamelCase_  ,			help="The name of the tokenizer (if different from the model."       )
  parser.add_argument("--is_causal"  ,			type=UpperCamelCase_  ,			default=UpperCamelCase_  ,			help="Whether or not the model is causal."       )
  parser.add_argument(
      "--model_revision"  ,			type=UpperCamelCase_  ,			default=UpperCamelCase_  ,			help="The revision to use for the model checkpoint."       )
  parser.add_argument("--torch_dtype"  ,			type=UpperCamelCase_  ,			default=UpperCamelCase_  ,			help="The dtype for the model."       )
  parser.add_argument("--disk_offload"  ,			action="store_true"       )

  _a					      =						parser.parse_args()

  # Sanitize args
  if args.model_name in DEFAULT_MODELS:
    _a					      =						DEFAULT_MODELS[args.model_name]
    _a					      =						defaults["model"]
    if args.tokenizer_name is None:
      _a					      =						defaults.get("tokenizer"  ,			args.model_name       )
    if args.is_causal is None:
      _a					      =						defaults["is_causal"]
    if args.model_revision is None:
      _a					      =						defaults.get("model_revision"  ,			"main"       )

  if args.is_causal is None:
    raise ValueError("Could not infer the default for `--is_causal`, pass either True or False for it."       )
  if args.tokenizer_name is None:
    _a					      =						args.model_name
  if args.model_revision is None:
    _a					      =						"main"

  return args






def 							lowerCAmelCase			(   )							->				str:







  '''simple docstring'''







  transformers.utils.logging.set_verbosity_error()
  _a					      =						parse_args()

  if args.torch_dtype is None:
    _a					      =						AutoConfig.from_pretrained(args.model_name       )
    _a					      =						getattr(UpperCamelCase_  ,			"torch_dtype"  ,			torch.floataa       )
  else:
    _a					      =						getattr(UpperCamelCase_  ,			args.torch_dtype       )
  _a					      =						AutoModelForCausalLM if args.is_causal else AutoModelForSeqaSeqLM
  _a					      =						{
      "torch_dtype": torch_dtype,
      "revision": args.model_revision,
  }
  if args.disk_offload:
    _a					      =						"tmp_offload"
    _a					      =						True

  _a					      =						start_measure()
  _a					      =						model_cls.from_pretrained(args.model_name  ,			device_map="auto"  ,			**UpperCamelCase_       )
  _a					      =						end_measure(UpperCamelCase_       )
  log_measures(UpperCamelCase_  ,			"Model loading"       )

  _a					      =						compute_module_sizes(UpperCamelCase_       )
  _a					      =						{v: 0 for v in model.hf_device_map.values()}
  for module, device in model.hf_device_map.items():
    device_size[device] += module_sizes[module]
  _a					      =						"\n".join([f'''- {device}: {size // 2**20}MiB''' for device, size in device_size.items()]       )
  print(f'''\nTheoretical use:\n{message}'''       )

  _a					      =						AutoTokenizer.from_pretrained(args.tokenizer_name       )

  _a					      =						start_measure()
  _a					      =						[]
  _a					      =						[]
  _a					      =						[]
  for prompt in PROMPTS:
    _a					      =						tokenizer(UpperCamelCase_  ,			return_tensors="pt"       ).to(0       )
    _a					      =						inputs["input_ids"][0].tolist()
    _a					      =						time.time()
    _a					      =						model.generate(inputs["input_ids"]       )
    _a					      =						time.time()
    _a					      =						outputs[0].tolist()
    _a					      =						len(UpperCamelCase_       ) if outputs[: len(UpperCamelCase_       )] != tokens else len(UpperCamelCase_       ) - len(UpperCamelCase_       )
    _a					      =						after_generate - before_generate

    _a					      =						tokenizer.decode(UpperCamelCase_  ,			skip_special_tokens=UpperCamelCase_       )
    texts_outs.append(UpperCamelCase_       )
    generation_times.append(UpperCamelCase_       )
    gen_tokens.append(UpperCamelCase_       )
    print(f'''Prompt: {prompt}\nGeneration {text_out}\nIn {generation_time:.2f}s for {num_gen_tokens} tokens\n'''       )

  _a					      =						end_measure(UpperCamelCase_       )
  log_measures(UpperCamelCase_  ,			"Model generation"       )

  _a					      =						[gen / tok for gen, tok in zip(UpperCamelCase_  ,			UpperCamelCase_       )]
  _a					      =						sum(UpperCamelCase_       ) / len(UpperCamelCase_       )
  print(f'''Average time of generation per token: {avg_gen:.2f}s'''       )
  print(f'''First generation (avg time per token): {generation_times_per_token[0]:.2f}s'''       )
  _a					      =						sum(generation_times_per_token[1:]       ) / (len(UpperCamelCase_       ) - 1)
  print(f'''Average time of generation per token (excluding the first): {avg_gen:.2f}s'''       )


if __name__ == "__main__":
     main()


