from manim import *




class 			__magic_name__	(		__a     ):





   """simple docstring"""




   def 	lowerCAmelCase    (						self       :	Tuple				):



    """simple docstring"""



    _UpperCamelCase:  Union[str, Any]    						=			Rectangle(height=0.5		,	width=0.5				)
    _UpperCamelCase:  List[Any]    						=			Rectangle(height=0.46		,	width=0.46				).set_stroke(width=0				)

    _UpperCamelCase:  Dict    						=			[mem.copy() for i in range(6				)]
    _UpperCamelCase:  Optional[int]    						=			[mem.copy() for i in range(6				)]
    _UpperCamelCase:  Optional[int]    						=			VGroup(*_lowercase				).arrange(_lowercase		,	buff=0				)
    _UpperCamelCase:  Optional[Any]    						=			VGroup(*_lowercase				).arrange(_lowercase		,	buff=0				)
    _UpperCamelCase:  List[str]    						=			VGroup(_lowercase		,	_lowercase				).arrange(_lowercase		,	buff=0				)
    _UpperCamelCase:  str    						=			Text('''CPU'''		,	font_size=24				)
    _UpperCamelCase:  Union[str, Any]    						=			Group(_lowercase		,	_lowercase				).arrange(_lowercase		,	buff=0.5		,	aligned_edge=_lowercase				)
    cpu.move_to([-2.5, -0.5, 0]				)
    self.add(_lowercase				)

    _UpperCamelCase:  Optional[int]    						=			[mem.copy() for i in range(1				)]
    _UpperCamelCase:  Dict    						=			VGroup(*_lowercase				).arrange(_lowercase		,	buff=0				)
    _UpperCamelCase:  Any    						=			Text('''GPU'''		,	font_size=24				)
    _UpperCamelCase:  List[str]    						=			Group(_lowercase		,	_lowercase				).arrange(_lowercase		,	buff=0.5		,	aligned_edge=_lowercase				)
    gpu.align_to(_lowercase		,	_lowercase				)
    gpu.set_x(gpu.get_x() - 1				)

    self.add(_lowercase				)

    _UpperCamelCase:  Union[str, Any]    						=			[mem.copy() for i in range(6				)]
    _UpperCamelCase:  str    						=			VGroup(*_lowercase				).arrange(_lowercase		,	buff=0				)

    _UpperCamelCase:  Union[str, Any]    						=			Text('''Model'''		,	font_size=24				)
    _UpperCamelCase:  str    						=			Group(_lowercase		,	_lowercase				).arrange(_lowercase		,	buff=0.5		,	aligned_edge=_lowercase				)
    model.move_to([3, -1.0, 0]				)

    self.play(
        Create(_lowercase		,	run_time=1				)		,	Create(_lowercase		,	run_time=1				)		,	Create(_lowercase		,	run_time=1				)		,	)

    _UpperCamelCase:  Optional[Any]    						=			MarkupText(
        f"""First, an empty model skeleton is loaded\ninto <span fgcolor='{YELLOW}'>memory</span> without using much RAM."""		,	font_size=24		,	)

    _UpperCamelCase:  List[str]    						=			Square(side_length=2.2				)
    key.move_to([-5, 2, 0]				)

    _UpperCamelCase:  Union[str, Any]    						=			MarkupText(
        f"""<b>Key:</b>\n\n<span fgcolor='{YELLOW}'>●</span> Empty Model"""		,	font_size=18		,	)

    key_text.move_to([-5, 2.4, 0]				)

    step_a.move_to([2, 2, 0]				)
    self.play(Write(_lowercase		,	run_time=2.5				)		,	Write(_lowercase				)		,	Write(_lowercase				)				)

    self.add(_lowercase				)

    _UpperCamelCase:  Tuple    						=			[]
    _UpperCamelCase:  Tuple    						=			[]
    _UpperCamelCase:  str    						=			[]
    for i, rect in enumerate(_lowercase				):
     _UpperCamelCase:  Tuple    						=			Rectangle(height=0.46		,	width=0.46				).set_stroke(width=0.0				).set_fill(_lowercase		,	opacity=0.7				)
     cpu_target.move_to(_lowercase				)
     cpu_target.generate_target()
     _UpperCamelCase:  str    						=			0.46 / 4
     _UpperCamelCase:  List[Any]    						=			0.46 / 3

     if i == 0:
      cpu_target.target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT				)		,	buff=0.02		,	direction=_lowercase				)
      cpu_target.target.set_x(cpu_target.target.get_x() + 0.1				)
     elif i == 3:
      cpu_target.target.next_to(cpu_targs[0].target		,	direction=_lowercase		,	buff=0.0				)
     else:
      cpu_target.target.next_to(cpu_targs[i - 1].target		,	direction=_lowercase		,	buff=0.0				)
     cpu_targs.append(_lowercase				)

     first_animations.append(rect.animate(run_time=0.5				).set_stroke(_lowercase				)				)
     second_animations.append(MoveToTarget(_lowercase		,	run_time=1.5				)				)

    self.play(*_lowercase				)
    self.play(*_lowercase				)

    self.wait()
# coding=utf-8
# Copyright 2023 The HuggingFace Inc. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# this script dumps information about the environment

import os
import platform
import sys


UpperCAmelCase_           =				'''3'''

print('''Python version:''', sys.version)

print('''OS platform:''', platform.platform())
print('''OS architecture:''', platform.machine())

try:
  import torch

  print('''Torch version:''', torch.__version__)
  print('''Cuda available:''', torch.cuda.is_available())
  print('''Cuda version:''', torch.version.cuda)
  print('''CuDNN version:''', torch.backends.cudnn.version())
  print('''Number of GPUs available:''', torch.cuda.device_count())
except ImportError:
  print('''Torch version:''', None)

try:
  import transformers

  print('''transformers version:''', transformers.__version__)
except ImportError:
  print('''transformers version:''', None)