



'''simple docstring'''
import shutil

import requests






def A__					(  UpperCAmelCase_						,						UpperCAmelCase_ = False						,						UpperCAmelCase_ = "."							):
						_UpperCamelCase      :	str				       =     'https://api.nasa.gov/planetary/apod'
						return requests.get(UpperCAmelCase_						,						params={'api_key': api_key}							).json()






def A__					(  UpperCAmelCase_						,						UpperCAmelCase_ = "."							):
						_UpperCamelCase      :	str				       =     get_apod_data(UpperCAmelCase_							)
						_UpperCamelCase      :	List[str]				       =     apod_data['url']
						_UpperCamelCase      :	Union[str, Any]				       =     img_url.split('/'							)[-1]
						_UpperCamelCase      :	Union[str, Any]				       =     requests.get(UpperCAmelCase_						,						stream=UpperCAmelCase_							)

						with open(f'{path}/{img_name}'						,						'wb+'							) as img_file:
												shutil.copyfileobj(response.raw						,						UpperCAmelCase_							)
						del response
						return apod_data






def A__					(  UpperCAmelCase_							):
						_UpperCamelCase      :	str				       =     'https://images-api.nasa.gov/search'
						return requests.get(UpperCAmelCase_						,						params={'q': query}							).json()


if __name__ == "__main__":
					print(save_apod('YOUR API KEY'))
					snake_case_				:			int						 =						get_archive_data('apollo 2011')['collection']['items']
					print(apollo_aaaa_items[0]['data'][0]['description'])







'''simple docstring'''
import argparse

import runhouse as rh
import torch
from nlp_example import training_function

from accelerate.utils import PrepareForLaunch, patch_environment






def A__					(  *UpperCAmelCase_							):
						_UpperCamelCase      :	str				       =     torch.cuda.device_count()
						print(f'Device count: {num_processes}'							)
						with patch_environment(
						    world_size=UpperCAmelCase_						,						master_addr='127.0.01'						,						master_port='29500'						,						mixed_precision=args[1].mixed_precision							):
												_UpperCamelCase      :	Optional[int]				       =     PrepareForLaunch(UpperCAmelCase_						,						distributed_type='MULTI_GPU'							)
												torch.multiprocessing.start_processes(UpperCAmelCase_						,						args=UpperCAmelCase_						,						nprocs=UpperCAmelCase_						,						start_method='spawn'							)


if __name__ == "__main__":
					# Refer to https://runhouse-docs.readthedocs-hosted.com/en/main/rh_primitives/cluster.html#hardware-setup
					# for cloud access setup instructions (if using on-demand hardware), and for API specifications.

					# on-demand GPU
					# gpu = rh.cluster(name='rh-cluster', instance_type='V100:1', provider='cheapest', use_spot=False)  # single GPU
					snake_case_				:			Optional[Any]						 =						rh.cluster(name='rh-cluster', instance_type='V100:4', provider='cheapest', use_spot=False)  # multi GPU
					gpu.up_if_not()

					# on-prem GPU
					# gpu = rh.cluster(
					#           ips=["ip_addr"], ssh_creds={ssh_user:"<username>", ssh_private_key:"<key_path>"}, name="rh-cluster"
					#       )

					# Set up remote function
					snake_case_				:			List[Any]						 =						[
					    'pip:./',
					    'transformers',
					    'datasets',
					    'evaluate',
					    'tqdm',
					    'scipy',
					    'scikit-learn',
					    'tensorboard',
					    'torch --upgrade --extra-index-url https://download.pytorch.org/whl/cu117',
					]
					snake_case_				:			Union[str, Any]						 =						rh.function(fn=launch_train, system=gpu, reqs=reqs, name='train_bert_glue')

					# Define train args/config, run train function
					snake_case_				:			List[str]						 =						argparse.Namespace(cpu=False, mixed_precision='fp16')
					snake_case_				:			List[str]						 =						{'lr': 2e-5, 'num_epochs': 3, 'seed': 42, 'batch_size': 16}
					launch_train_gpu(config, train_args, stream_logs=True)

					# Alternatively, we can just run as instructed in the README (but only because there's already a wrapper CLI):
					# gpu.install_packages(reqs)
					# gpu.run(['accelerate launch --multi_gpu accelerate/examples/nlp_example.py'])


