usrbinenv python codingutf8 2021 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 orglicenseslicense2 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 refer to https runhousedocs readthedocshosted comenlatestapipythoncluster htmlhardwaresetup for cloud access setup instructions if using ondemand hardware if user passes user user host host keypath keypath example args fill them in as byo cluster if user passes instance instance provider provider example args fill them in as ondemand cluster throw an error if user passes both byo and ondemand cluster args otherwise use default values set up remote environment note transformers is copied into the home directory on the remote machine so we can install from there run example you can bypass the cli wrapper and paste your own code here alternatively we can just import and run a training function especially if there s no wrapper cli from myscript import train reqs pip torch datasets accelerate evaluate tqdm scipy scikitlearn tensorboard launchtraingpu rh functionfntrain systemgpu reqsreqs name trainbertglue we can pass in arguments just like we would to a function launchtraingpunumepochs 3 lr 2e5 seed 42 batchsize 16 streamlogstrue usr bin env python coding utf 8 2021 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 refer to https runhouse docs readthedocs hosted com en latest api python cluster html hardware setup for cloud access setup instructions if using on demand hardware if user passes user user host host key_path key_path example args fill them in as byo cluster if user passes instance instance provider provider example args fill them in as on demand cluster throw an error if user passes both byo and on demand cluster args otherwise use default values set up remote environment installs transformers from local source note transformers is copied into the home directory on the remote machine so we can install from there run example you can bypass the cli wrapper and paste your own code here alternatively we can just import and run a training function especially if there s no wrapper cli from my_script import train reqs pip torch datasets accelerate evaluate tqdm scipy scikit learn tensorboard launch_train_gpu rh function fn train system gpu reqs reqs name train_bert_glue we can pass in arguments just like we would to a function launch_train_gpu num_epochs 3 lr 2e 5 seed 42 batch_size 16 stream_logs true
import argparse
import shlex

import runhouse as rh


if __name__ == "__main__":
    
    

    
    
    
    
    parser = argparse.ArgumentParser()
    parser.add_argument("--user", type=str, default="ubuntu")
    parser.add_argument("--host", type=str, default="localhost")
    parser.add_argument("--key_path", type=str, default=None)
    parser.add_argument("--instance", type=str, default="V100:1")
    parser.add_argument("--provider", type=str, default="cheapest")
    parser.add_argument("--use_spot", type=bool, default=False)
    parser.add_argument("--example", type=str, default="pytorch/text-generation/run_generation.py")
    args, unknown = parser.parse_known_args()
    if args.host != "localhost":
        if args.instance != "V100:1" or args.provider != "cheapest":
            raise ValueError("Cannot specify both BYO and on-demand cluster args")
        cluster = rh.cluster(
            name="rh-cluster", ips=[args.host], ssh_creds={"ssh_user": args.user, "ssh_private_key": args.key_path}
        )
    else:
        cluster = rh.cluster(
            name="rh-cluster", instance_type=args.instance, provider=args.provider, use_spot=args.use_spot
        )
    example_dir = args.example.rsplit("/", 1)[0]

    
    cluster.install_packages(["pip:./"])  
    
    cluster.run([f"pip install -r transformers/examples/{example_dir}/requirements.txt"])
    cluster.run(["pip install torch --upgrade --extra-index-url https://download.pytorch.org/whl/cu117"])

    
    cluster.run([f'python transformers/examples/{args.example} {" ".join(shlex.quote(arg) for arg in unknown)}'])