← back to Exo
remove tinygrad hidden files
e82dab1d4c3bfdc021f3173e2f6a53bc5a6531ff · 2024-07-17 20:23:02 -0700 · Alex Cheema
Files touched
D tinychat/.github/workflows/benchmark.ymlD tinychat/.github/workflows/docs.ymlD tinychat/.github/workflows/python-publish.ymlD tinychat/.github/workflows/szdiff.ymlD tinychat/.github/workflows/test.ymlD tinychat/.gitignoreD tinychat/.pre-commit-config.yamlD tinychat/.pylintrc
Diff
commit e82dab1d4c3bfdc021f3173e2f6a53bc5a6531ff
Author: Alex Cheema <alexcheema123@gmail.com>
Date: Wed Jul 17 20:23:02 2024 -0700
remove tinygrad hidden files
---
tinychat/.github/workflows/benchmark.yml | 435 ---------------------
tinychat/.github/workflows/docs.yml | 30 --
tinychat/.github/workflows/python-publish.yml | 30 --
tinychat/.github/workflows/szdiff.yml | 98 -----
tinychat/.github/workflows/test.yml | 533 --------------------------
tinychat/.gitignore | 56 ---
tinychat/.pre-commit-config.yaml | 51 ---
tinychat/.pylintrc | 472 -----------------------
8 files changed, 1705 deletions(-)
diff --git a/tinychat/.github/workflows/benchmark.yml b/tinychat/.github/workflows/benchmark.yml
deleted file mode 100644
index ac24067f..00000000
--- a/tinychat/.github/workflows/benchmark.yml
+++ /dev/null
@@ -1,435 +0,0 @@
-name: Benchmarks
-env:
- RUN_PROCESS_REPLAY: "1"
- ASSERT_PROCESS_REPLAY: "0"
- PYTHONPATH: .
-
-on:
- push:
- branches:
- - master
- - update_benchmark
- - update_benchmark_staging
- workflow_dispatch:
- inputs:
- run_process_replay:
- description: "Run process replay tests"
- required: false
- default: false
- type: boolean
-
-jobs:
- testmacbenchmark:
- name: Mac Benchmark
- runs-on: [self-hosted, macOS]
- defaults:
- run:
- shell: bash -o pipefail {0}
- if: github.repository_owner == 'tinygrad'
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Symlink models and datasets
- run: |
- mkdir -p weights
- ln -s ~/tinygrad/extra/disassemblers/applegpu extra/disassemblers/applegpu
- ln -s ~/tinygrad/weights/sd-v1-4.ckpt weights/sd-v1-4.ckpt
- ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz
- ln -s ~/tinygrad/weights/LLaMA weights/LLaMA
- ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz
- - name: Run Stable Diffusion
- run: JIT=2 python3 examples/stable_diffusion.py --seed 0 --noshow --timing | tee sd.txt
- - name: Run Stable Diffusion with fp16
- run: JIT=2 python3 examples/stable_diffusion.py --fp16 --seed 0 --noshow --timing | tee sd_fp16.txt
- - name: Run SDXL
- run: JIT=2 python3 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt
- - name: Run model inference benchmark
- run: METAL=1 python3 test/external/external_model_benchmark.py
- - name: Test speed vs torch
- run: BIG=2 MPS=1 python3 test/test_speed_v_torch.py | tee torch_speed.txt
- - name: Test tensor cores
- run: METAL=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded
- - name: Run Tensor Core GEMM
- run: |
- DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul.txt
- DEBUG=2 HALF=1 python3 extra/gemm/simple_matmul.py | tee matmul_half.txt
- - name: Fuzz Padded Tensor Core GEMM
- run: METAL=1 M_START=6 M_STOP=10 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=6 K_STOP=24 K_STEP=1 TC_OPT=2 DEBUG=2 python3 ./extra/gemm/fuzz_matmul.py
- - name: Run LLaMA
- run: |
- JIT=0 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt
- JIT=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt
- - name: Run LLaMA with BEAM
- run: JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt
- - name: Run quantized LLaMA
- run: |
- python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing --quantize int8 | tee llama_int8.txt
- python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing --quantize nf4 | tee llama_nf4.txt
- - name: Run LLaMA 7B on 4 (virtual) GPUs
- run: python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt
- - name: Run GPT2
- run: |
- JIT=0 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt
- JIT=1 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt
- - name: Run GPT2 w HALF
- run: HALF=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt
- - name: Run GPT2 w HALF/BEAM
- run: HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 CAST_BEFORE_VIEW=0 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt
- - name: Train MNIST
- run: time PYTHONPATH=. TARGET_EVAL_ACC_PCT=97.3 python3 examples/beautiful_mnist.py | tee beautiful_mnist.txt
- - name: Run 10 CIFAR training steps
- run: JIT=2 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar.txt
- - name: Run 10 CIFAR training steps w HALF
- run: JIT=2 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_half.txt
- #- name: Run 10 CIFAR training steps w BF16
- # run: STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3 examples/hlb_cifar10.py | tee train_cifar_bf16.txt
- - name: Run 10 CIFAR training steps w winograd
- run: JIT=2 WINO=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar_wino.txt
- - name: Run process replay tests
- if: env.RUN_PROCESS_REPLAY == '1'
- run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
- - uses: actions/upload-artifact@v4
- with:
- name: Speed (Mac)
- path: |
- onnx_inference_speed.csv
- torch_speed.txt
- llama_unjitted.txt
- llama_jitted.txt
- llama_beam.txt
- llama_int8.txt
- llama_nf4.txt
- llama_four_gpu.txt
- gpt2_unjitted.txt
- gpt2_jitted.txt
- gpt2_half.txt
- gpt2_half_beam.txt
- matmul.txt
- matmul_half.txt
- sd.txt
- sd_fp16.txt
- sdxl.txt
- beautiful_mnist.txt
- train_cifar.txt
- train_cifar_half.txt
- train_cifar_bf16.txt
- train_cifar_wino.txt
-
- testnvidiabenchmark:
- name: tinybox green Benchmark
- runs-on: [self-hosted, Linux, tinyboxgreen]
- defaults:
- run:
- shell: bash -o pipefail {0}
- if: github.repository_owner == 'tinygrad'
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Print nvidia-smi
- run: nvidia-smi
- - name: Symlink models and datasets
- run: |
- mkdir -p weights
- ln -s ~/tinygrad/weights/LLaMA weights/LLaMA
- ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen
- ln -s /raid/weights/LLaMA-2 weights/LLaMA-2
- ln -s /raid/weights/LLaMA-3 weights/LLaMA-3
- mkdir -p extra/datasets
- ln -s /raid/datasets/imagenet extra/datasets/imagenet
- - name: Run model inference benchmark
- run: NV=1 NOCLANG=1 python3 test/external/external_model_benchmark.py
- - name: Test speed vs torch
- run: NV=1 BIG=2 TORCHCUDA=1 python3 test/test_speed_v_torch.py | tee torch_speed.txt
- - name: Test tensor cores
- run: |
- NV=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded
- PTX=1 NV=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded
- - name: Run Tensor Core GEMM (CUDA)
- run: |
- CUDA=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul.txt
- CUDA=1 BFLOAT16=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_bfloat16.txt
- - name: Run Tensor Core GEMM (PTX)
- run: NV=1 PTX=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_ptx.txt
- - name: Run Tensor Core GEMM (NV)
- run: NV=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_nv.txt
- - name: Run Tensor Core GEMM (NV) with BEAM
- run: BEAM=4 NV=1 HALF=1 IGNORE_BEAM_CACHE=1 DEBUG=2 python3 extra/gemm/simple_matmul.py
- - name: Fuzz Padded Tensor Core GEMM (NV)
- run: NV=1 M_START=12 M_STOP=20 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 python3 ./extra/gemm/fuzz_matmul.py
- - name: Fuzz Padded Tensor Core GEMM (PTX)
- run: NV=1 PTX=1 M_START=12 M_STOP=20 M_STEP=1 N_START=6 N_STOP=10 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 python3 ./extra/gemm/fuzz_matmul.py
- - name: Run Stable Diffusion
- run: NV=1 python3 examples/stable_diffusion.py --seed 0 --noshow --timing | tee sd.txt
- - name: Run SDXL
- run: NV=1 python3 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt
- - name: Run LLaMA
- run: |
- NV=1 JIT=0 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt
- NV=1 JIT=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt
- - name: Run LLaMA with BEAM
- run: NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt
- - name: Run LLaMA 7B on 4 GPUs
- run: NV=1 python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt
- - name: Run LLaMA 7B on 6 GPUs
- run: NV=1 python3 examples/llama.py --gen 1 --size 7B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_six_gpu.txt
- # TODO: this is flaky
- # - name: Run LLaMA-3 8B BEAM
- # run: NV=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama3.py --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_beam.txt
- - name: Run LLaMA-3 8B on 4 GPUs
- run: NV=1 python3 examples/llama3.py --shard 4 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_four_gpu.txt
- - name: Run LLaMA-3 8B on 6 GPUs
- run: NV=1 python3 examples/llama3.py --shard 6 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_six_gpu.txt
- # - name: Run LLaMA-2 70B
- # run: CUDA=1 python3 examples/llama.py --gen 2 --size 70B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_2_70B.txt
- - name: Run Mixtral 8x7B
- run: time NV=1 python3 examples/mixtral.py --temperature 0 --count 10 --timing | tee mixtral.txt
- - name: Run GPT2
- run: |
- NV=1 JIT=0 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt
- NV=1 JIT=1 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt
- - name: Run GPT2 w HALF
- run: NV=1 HALF=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt
- - name: Run GPT2 w HALF/BEAM
- run: NV=1 HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 CAST_BEFORE_VIEW=0 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt
- - name: Run process replay tests
- if: env.RUN_PROCESS_REPLAY == '1'
- run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
- - uses: actions/upload-artifact@v4
- with:
- name: Speed (NVIDIA)
- path: |
- onnx_inference_speed.csv
- torch_speed.txt
- matmul.txt
- matmul_bfloat16.txt
- matmul_ptx.txt
- matmul_nv.txt
- sd.txt
- sdxl.txt
- llama_unjitted.txt
- llama_jitted.txt
- llama_beam.txt
- llama_four_gpu.txt
- llama_six_gpu.txt
- llama3_beam.txt
- llama3_four_gpu.txt
- llama3_six_gpu.txt
- # llama_2_70B.txt
- mixtral.txt
- gpt2_unjitted.txt
- gpt2_jitted.txt
- gpt2_half.txt
- gpt2_half_beam.txt
-
- testmorenvidiabenchmark:
- name: tinybox green Training Benchmark
- runs-on: [self-hosted, Linux, tinyboxgreen]
- defaults:
- run:
- shell: bash -o pipefail {0}
- if: github.repository_owner == 'tinygrad'
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Symlink models and datasets
- run: |
- mkdir -p weights
- ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz
- ln -s ~/tinygrad/weights/LLaMA weights/LLaMA
- ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz
- ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen
- ln -s /raid/weights/LLaMA-2 weights/LLaMA-2
- mkdir -p extra/datasets
- ln -s /raid/datasets/imagenet extra/datasets/imagenet
- - name: Train MNIST
- run: time PYTHONPATH=. NV=1 TARGET_EVAL_ACC_PCT=97.3 python3 examples/beautiful_mnist.py | tee beautiful_mnist.txt
- - name: Run 10 CIFAR training steps
- run: NV=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar.txt
- - name: Run 10 CIFAR training steps w HALF
- run: NV=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_half.txt
- - name: Run 10 CIFAR training steps w BF16
- run: NV=1 STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3 examples/hlb_cifar10.py | tee train_cifar_bf16.txt
- - name: Run 10 CIFAR training steps w winograd
- run: NV=1 WINO=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar_wino.txt
- - name: Run full CIFAR training w 1 GPU
- run: time NV=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_one_gpu.txt
- - name: Run full CIFAR training steps w 6 GPUS
- run: time NV=1 DEFAULT_FLOAT=HALF STEPS=350 BS=1536 GPUS=6 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_six_gpu.txt
- - name: Run MLPerf resnet eval on training data
- run: time NV=1 MODEL=resnet python3 examples/mlperf/model_eval.py
- - name: Run 10 MLPerf ResNet50 training steps (1 gpu)
- run: NV=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet_one_gpu.txt
- - name: Run 10 MLPerf ResNet50 training steps (6 gpu)
- run: NV=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=1536 GPUS=6 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet.txt
- - name: Run process replay tests
- if: env.RUN_PROCESS_REPLAY == '1'
- run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
- - uses: actions/upload-artifact@v4
- with:
- name: Speed (NVIDIA Training)
- path: |
- beautiful_mnist.txt
- train_cifar.txt
- train_cifar_half.txt
- train_cifar_bf16.txt
- train_cifar_wino.txt
- train_cifar_one_gpu.txt
- train_resnet.txt
- train_resnet_one_gpu.txt
- train_cifar_six_gpu.txt
-
- testamdbenchmark:
- name: tinybox red Benchmark
- runs-on: [self-hosted, Linux, tinybox]
- defaults:
- run:
- shell: bash -o pipefail {0}
- if: github.repository_owner == 'tinygrad'
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Symlink models and datasets
- run: |
- mkdir -p weights
- ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz
- ln -s ~/tinygrad/weights/LLaMA weights/LLaMA
- ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz
- ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen
- ln -s /raid/weights/LLaMA-2 weights/LLaMA-2
- ln -s /raid/weights/LLaMA-3 weights/LLaMA-3
- mkdir -p extra/datasets
- ln -s /raid/datasets/imagenet extra/datasets/imagenet
- - name: Show off tinybox
- run: /opt/rocm/bin/rocm-bandwidth-test
- # TODO: unstable on AMD
- #- name: Run model inference benchmark
- # run: LD_PRELOAD="/opt/rocm/lib/libhsa-runtime64.so" HSA=1 NOCLANG=1 python3 test/external/external_model_benchmark.py
- # TODO: unstable on AMD
- #- name: Test speed vs torch
- # run: |
- # python3 -c "import torch; print(torch.__version__)"
- # LD_PRELOAD="/opt/rocm/lib/libhsa-runtime64.so" HSA=1 BIG=2 TORCHCUDA=1 python3 test/test_speed_v_torch.py | tee torch_speed.txt
- - name: Test tensor cores
- run: |
- AMD=1 python3 test/test_linearizer.py TestLinearizer.test_tensor_cores TestLinearizer.test_tensor_cores_padded
- - name: Run Tensor Core GEMM (AMD)
- run: AMD=1 HALF=1 DEBUG=2 python3 extra/gemm/simple_matmul.py | tee matmul_amd.txt
- # TODO: AMD compiler bug causes this to fail
- #- name: Fuzz Padded Tensor Core GEMM
- # run: HSA=1 M_START=12 M_STOP=20 M_STEP=1 N_START=12 N_STOP=20 N_STEP=1 K_START=28 K_STOP=36 K_STEP=1 HALF=1 TC_OPT=2 DEBUG=2 python3 ./extra/gemm/fuzz_matmul.py
- - name: Run Stable Diffusion
- run: AMD=1 python3 examples/stable_diffusion.py --seed 0 --noshow --timing | tee sd.txt
- - name: Run SDXL
- run: AMD=1 python3 examples/sdxl.py --seed 0 --noshow --timing | tee sdxl.txt
- - name: Run LLaMA 7B
- run: |
- AMD=1 JIT=0 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_unjitted.txt
- AMD=1 JIT=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_jitted.txt
- - name: Run LLaMA 7B with BEAM
- run: AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama.py --gen 1 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_beam.txt
- - name: Run LLaMA 7B on 4 GPUs
- run: AMD=1 python3 examples/llama.py --gen 1 --size 7B --shard 4 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_four_gpu.txt
- - name: Run LLaMA 7B on 6 GPUs
- run: AMD=1 python3 examples/llama.py --gen 1 --size 7B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_six_gpu.txt
- - name: Run LLaMA-3 8B BEAM
- run: AMD=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 python3 examples/llama3.py --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_beam.txt
- - name: Run LLaMA-3 8B on 4 GPUs
- run: AMD=1 python3 examples/llama3.py --shard 4 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_four_gpu.txt
- - name: Run LLaMA-3 8B on 6 GPUs
- run: AMD=1 python3 examples/llama3.py --shard 6 --model weights/LLaMA-3/8B-SF-DPO/ --benchmark | tee llama3_six_gpu.txt
- - name: Run LLaMA-2 70B
- run: AMD=1 python3 examples/llama.py --gen 2 --size 70B --shard 6 --prompt "Hello." --count 10 --temperature 0 --timing | tee llama_2_70B.txt
- - name: Run Mixtral 8x7B
- run: time AMD=1 python3 examples/mixtral.py --temperature 0 --count 10 --timing | tee mixtral.txt
- - name: Run GPT2
- run: |
- AMD=1 JIT=0 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_unjitted.txt
- AMD=1 JIT=1 python3 examples/gpt2.py --prompt "Hello." --count 10 --temperature 0 --timing | tee gpt2_jitted.txt
- - name: Run GPT2 w HALF
- run: AMD=1 HALF=1 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half.txt
- - name: Run GPT2 w HALF/BEAM
- run: AMD=1 HALF=1 JITBEAM=2 IGNORE_BEAM_CACHE=1 CAST_BEFORE_VIEW=0 python3 examples/gpt2.py --count 10 --temperature 0 --timing | tee gpt2_half_beam.txt
- - name: Run process replay tests
- if: env.RUN_PROCESS_REPLAY == '1'
- run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
- - uses: actions/upload-artifact@v4
- with:
- name: Speed (AMD)
- path: |
- onnx_inference_speed.csv
- torch_speed.txt
- llama_unjitted.txt
- llama_jitted.txt
- llama_beam.txt
- llama_four_gpu.txt
- llama_six_gpu.txt
- llama3_beam.txt
- llama3_four_gpu.txt
- llama3_six_gpu.txt
- llama_2_70B.txt
- gpt2_unjitted.txt
- gpt2_jitted.txt
- gpt2_half.txt
- gpt2_half_beam.txt
- matmul.txt
- matmul_amd.txt
- sd.txt
- sdxl.txt
- mixtral.txt
-
- testmoreamdbenchmark:
- name: tinybox red Training Benchmark
- runs-on: [self-hosted, Linux, tinybox]
- defaults:
- run:
- shell: bash -o pipefail {0}
- if: github.repository_owner == 'tinygrad'
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Symlink models and datasets
- run: |
- mkdir -p weights
- ln -s ~/tinygrad/weights/bpe_simple_vocab_16e6.txt.gz weights/bpe_simple_vocab_16e6.txt.gz
- ln -s ~/tinygrad/weights/LLaMA weights/LLaMA
- ln -s ~/tinygrad/extra/datasets/cifar-10-python.tar.gz extra/datasets/cifar-10-python.tar.gz
- ln -s /raid/weights/mixtral-8x7b-32kseqlen weights/mixtral-8x7b-32kseqlen
- ln -s /raid/weights/LLaMA-2 weights/LLaMA-2
- mkdir -p extra/datasets
- ln -s /raid/datasets/imagenet extra/datasets/imagenet
- - name: Train MNIST
- run: time PYTHONPATH=. AMD=1 TARGET_EVAL_ACC_PCT=97.3 python3 examples/beautiful_mnist.py | tee beautiful_mnist.txt
- - name: Run 10 CIFAR training steps
- run: AMD=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar.txt
- - name: Run 10 CIFAR training steps w HALF
- run: AMD=1 STEPS=10 DEFAULT_FLOAT=HALF python3 examples/hlb_cifar10.py | tee train_cifar_half.txt
- - name: Run 10 CIFAR training steps w BF16
- run: AMD=1 STEPS=10 DEFAULT_FLOAT=BFLOAT16 python3 examples/hlb_cifar10.py | tee train_cifar_bf16.txt
- - name: Run 10 CIFAR training steps w winograd
- run: AMD=1 WINO=1 STEPS=10 python3 examples/hlb_cifar10.py | tee train_cifar_wino.txt
- - name: Run full CIFAR training w 1 GPU
- run: time AMD=1 DEFAULT_FLOAT=HALF LATEWINO=1 STEPS=1000 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_one_gpu.txt
- - name: Run full CIFAR training steps w 6 GPUS
- run: time AMD=1 DEFAULT_FLOAT=HALF STEPS=350 BS=1536 GPUS=6 TARGET_EVAL_ACC_PCT=93.2 python3 examples/hlb_cifar10.py | tee train_cifar_six_gpu.txt
- - name: Run MLPerf resnet eval
- run: time AMD=1 MODEL=resnet python3 examples/mlperf/model_eval.py
- - name: Run 10 MLPerf ResNet50 training steps (1 gpu)
- run: AMD=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=256 GPUS=1 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet_one_gpu.txt
- - name: Run 10 MLPerf ResNet50 training steps (6 gpu)
- run: AMD=1 DEFAULT_FLOAT=HALF BENCHMARK=10 BS=1536 GPUS=6 MODEL=resnet python3 examples/mlperf/model_train.py | tee train_resnet.txt
- - name: Run process replay tests
- if: env.RUN_PROCESS_REPLAY == '1'
- run: cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
- - uses: actions/upload-artifact@v4
- with:
- name: Speed (AMD Training)
- path: |
- beautiful_mnist.txt
- train_cifar.txt
- train_cifar_half.txt
- train_cifar_bf16.txt
- train_cifar_wino.txt
- train_cifar_one_gpu.txt
- train_resnet.txt
- train_resnet_one_gpu.txt
- train_cifar_six_gpu.txt
diff --git a/tinychat/.github/workflows/docs.yml b/tinychat/.github/workflows/docs.yml
deleted file mode 100644
index def8b316..00000000
--- a/tinychat/.github/workflows/docs.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Deploy Docs
-on:
- push:
- branches:
- - master
- - mkdocs
-permissions:
- contents: write
-jobs:
- deploy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Configure Git Credentials
- run: |
- git config user.name github-actions[bot]
- git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- - uses: actions/setup-python@v5
- with:
- python-version: 3.x
- - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- - uses: actions/cache@v4
- with:
- key: mkdocs-material-${{ env.cache_id }}
- path: .cache
- restore-keys: |
- mkdocs-material-
- - run: pip install -e .[docs]
- - run: mkdocs build --strict
- - run: mkdocs gh-deploy --force
\ No newline at end of file
diff --git a/tinychat/.github/workflows/python-publish.yml b/tinychat/.github/workflows/python-publish.yml
deleted file mode 100644
index 22f36f23..00000000
--- a/tinychat/.github/workflows/python-publish.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# This workflows will upload a Python Package using Twine when a release is created
-# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
-
-name: Upload Python Package
-
-on:
- release:
- types: [published]
- workflow_dispatch:
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up Python
- uses: actions/setup-python@v2
- with:
- python-version: '3.x'
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install setuptools wheel twine
- - name: Build and publish
- env:
- TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
- TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
- run: |
- python setup.py sdist bdist_wheel
- twine upload dist/*
diff --git a/tinychat/.github/workflows/szdiff.yml b/tinychat/.github/workflows/szdiff.yml
deleted file mode 100644
index 4222ef31..00000000
--- a/tinychat/.github/workflows/szdiff.yml
+++ /dev/null
@@ -1,98 +0,0 @@
-name: Check Line Counts
-on:
- pull_request_target:
-
-# Cancel the workflow in progress in newer build is about to start.
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- checkbranch:
- name: Check PR Branch status
- runs-on: ubuntu-latest
- outputs:
- branchstat: ${{ steps.brstat.outputs.stat}}
- steps:
- - name: Check code from PR branch
- uses: actions/checkout@v4
- with:
- repository: ${{ github.event.pull_request.head.repo.full_name }}
- ref: ${{ github.event.pull_request.head.sha }}
- fetch-depth: 0
- - name: Check whether branch is up-to-date
- id: brstat
- run: |
- git remote add tinygrad https://github.com/tinygrad/tinygrad
- git fetch tinygrad master
- echo "${{ github.event.pull_request.head.sha }}"
- git rev-list --left-right --count tinygrad/master...${{ github.event.pull_request.head.sha }} | awk '{print "Behind "$1" - Ahead "$2""}'
- count=$(git rev-list --left-right --count tinygrad/master...${{ github.event.pull_request.head.sha }} | awk '{print $1}')
- if [ $count -gt 0 ]
- then
- echo "Current branch is behind tinygrad master branch!"
- echo "stat=true" >> "$GITHUB_OUTPUT"
- else
- echo "stat=false" >> "$GITHUB_OUTPUT"
- fi
-
- szdiff:
- name: Core Library Line Difference
- permissions:
- contents: read
- pull-requests: write
- runs-on: ubuntu-latest
- needs: checkbranch
- if: needs.checkbranch.outputs.branchstat == 'false'
- steps:
- - name: Checkout code from PR branch
- uses: actions/checkout@v4
- with:
- repository: ${{ github.event.pull_request.head.repo.full_name }}
- ref: ${{ github.event.pull_request.head.sha }}
- path: pr
- # the base default to tinygrad master and cannot be other fork branch for security purpose
- - name: Checkout code from tinygrad master
- uses: actions/checkout@v4
- with:
- path: base
- - name: Set up Python 3.10
- uses: actions/setup-python@v5
- with:
- python-version: '3.10'
- - name: Count Line Diff
- run: |
- pip install tabulate
- BASE="$GITHUB_WORKSPACE/base"
- PR="$GITHUB_WORKSPACE/pr"
- cp "$BASE/sz.py" .
- echo "loc_content<<EOF" >> "$GITHUB_ENV"
- python sz.py "$BASE" "$PR" >> "$GITHUB_ENV"
- echo "EOF" >> "$GITHUB_ENV"
- - name: Comment Code Line Diff
- continue-on-error: false
- uses: marocchino/sticky-pull-request-comment@v2
- with:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- ignore_empty: true
- skip_unchanged: true
- recreate: true
- message: ${{ env.loc_content }}
-
- rebase:
- name: Core Library Line Difference
- permissions:
- pull-requests: write
- runs-on: ubuntu-latest
- needs: checkbranch
- if: needs.checkbranch.outputs.branchstat == 'true'
- steps:
- - name: Comment Rebase
- continue-on-error: false
- uses: marocchino/sticky-pull-request-comment@v2
- with:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- skip_unchanged: true
- recreate: true
- message: |
- This branch currently is behind tinygrad/master. The line count difference bot is disabled.
diff --git a/tinychat/.github/workflows/test.yml b/tinychat/.github/workflows/test.yml
deleted file mode 100644
index 139c3943..00000000
--- a/tinychat/.github/workflows/test.yml
+++ /dev/null
@@ -1,533 +0,0 @@
-name: Unit Tests
-env:
- # increment this when downloads substantially change to avoid the internet
- DOWNLOAD_CACHE_VERSION: '5'
- RUN_PROCESS_REPLAY: 1
-
-on:
- push:
- branches:
- - master
- pull_request:
- workflow_dispatch:
-
-jobs:
- uops:
- name: uops tests
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Set up Python 3.12
- uses: actions/setup-python@v5
- with:
- python-version: 3.12
- - name: Cache python packages
- uses: actions/cache@v4
- with:
- path: ${{ env.Python3_ROOT_DIR }}/lib/python3.12/site-packages
- key: uops-packages-${{ hashFiles('**/setup.py') }}-3.12
- - name: Install dependencies
- run: pip install -e '.[testing]' --extra-index-url https://download.pytorch.org/whl/cpu
- - name: Test IMAGE=2 support
- run: |
- IMAGE=2 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm
- IMAGE=2 PYTHON=1 python3 test/test_ops.py TestOps.test_simple_conv2d
- - name: Test emulated METAL tensor cores
- run: DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_big_gemm
- - name: Test emulated AMD tensor cores
- run: |
- PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py
- PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=0 python3 ./extra/gemm/simple_matmul.py
- PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=16 HALF=1 ACC_HALF=1 python3 ./extra/gemm/simple_matmul.py
- PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 N=64 HALF=1 ACC_HALF=1 python3 ./extra/gemm/simple_matmul.py
- - name: Test emulated CUDA tensor cores
- run: DEBUG=2 EMULATE_CUDA=1 FORWARD_ONLY=1 PYTHON=1 python3 test/test_ops.py TestOps.test_gemm
- - name: Full test tensor cores
- run: |
- PYTHONPATH=. DEBUG=2 EMULATE_METAL=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores
- PYTHONPATH=. DEBUG=2 EMULATE_AMD=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores
- PYTHONPATH=. DEBUG=2 EMULATE_CUDA=1 FORWARD_ONLY=1 PYTHON=1 python3 ./test/test_linearizer.py TestLinearizer.test_tensor_cores
- - name: Test dtype with Python emulator
- run: DEBUG=1 PYTHONPATH=. PYTHON=1 python3 -m pytest -n=auto test/test_dtype.py test/test_dtype_alu.py
- - name: Test ops with Python emulator
- run: DEBUG=2 PYTHON=1 python3 -m pytest -n=auto test/test_ops.py -k "not (test_split or test_simple_cumsum or test_cumsum or test_einsum or test_dot or test_dot_1d or test_big_gemm or test_broadcastdot or test_multidot or test_var_axis or test_std_axis or test_broadcast_full or test_broadcast_partial or test_simple_conv3d or test_dilated_conv_transpose2d or test_simple_conv_transpose3d or test_large_input_conv2d or test_maxpool2d or test_maxpool2d_simple or test_maxpool2d_bigger_stride or test_avgpool2d or test_cat or test_scaled_product_attention or test_scaled_product_attention_causal or test_slice_fancy_indexing_dim_inject_none or test_slice_fancy_indexing_list_indices or test_slice_fancy_indexing_no_dim_collapse or test_slice_fancy_indexing_tuple_indices or test_slice_fancy_indexing_list_with_tensors or test_slice_fancy_indexing_dim_collapse_int)" --durations=20
- - name: Test uops with Python emulator
- run: PYTHON=1 python3 -m pytest test/test_uops.py --durations=20
- - name: Test symbolic with Python emulator
- run: PYTHONPATH=. PYTHON=1 python3 test/test_symbolic_ops.py
- - name: test_linearizer_failures with Python emulator
- run: PYTHONPATH=. PYTHON=1 python3 -m pytest -rA test/test_linearizer_failures.py::TestLinearizerFailures::test_failure_1
-
- linter:
- name: Linters
- runs-on: ubuntu-latest
- timeout-minutes: 10
-
- # TODO: run the pre-commit hook to replace a lot of this
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Set up Python 3.8
- uses: actions/setup-python@v5
- with:
- python-version: 3.8
- - name: Cache python packages
- uses: actions/cache@v4
- with:
- path: ${{ env.Python3_ROOT_DIR }}/lib/python3.8/site-packages
- key: linting-packages-${{ hashFiles('**/setup.py') }}-3.8
- - name: Install dependencies
- run: pip install -e '.[linting,testing,docs]' --extra-index-url https://download.pytorch.org/whl/cpu
- - name: Lint with pylint
- run: python -m pylint --disable=all -e W0311 -e C0303 --jobs=0 --indent-string=' ' **/*.py
- - name: Lint with ruff
- run: |
- pip3 install --upgrade --force-reinstall ruff
- python3 -m ruff check .
- - name: Lint tinygrad with pylint
- run: python -m pylint tinygrad/
- - name: Run mypy
- run: python -m mypy --strict-equality
- - name: Test Docs
- run: |
- python docs/abstractions2.py
- python docs/abstractions3.py
- - name: Test Docs Build
- run: mkdocs build --strict
- - name: Test Quickstart
- run: awk '/```python/{flag=1;next}/```/{flag=0}flag' docs/quickstart.md > quickstart.py && PYTHONPATH=. python quickstart.py
- - name: Test README
- run: awk '/```python/{flag=1;next}/```/{flag=0}flag' README.md > README.py && PYTHONPATH=. python README.py
- - name: Fuzz Test symbolic
- run: python test/external/fuzz_symbolic.py
- - name: Fuzz Test shapetracker
- run: |
- PYTHONPATH="." python test/external/fuzz_shapetracker.py
- PYTHONPATH="." python test/external/fuzz_shapetracker_math.py
- - name: Test to_movement_ops
- run: PYTHONPATH="." python extra/to_movement_ops.py
- - name: Use as an external package
- run: |
- mkdir $HOME/test_external_dir
- cd $HOME/test_external_dir
- python -m venv venv
- source venv/bin/activate
- pip install $GITHUB_WORKSPACE
- python -c "from tinygrad.tensor import Tensor; print(Tensor([1,2,3,4,5]))"
- - name: Test DEBUG
- run: DEBUG=100 python3 -c "from tinygrad import Tensor; N = 1024; a, b = Tensor.rand(N, N), Tensor.rand(N, N); c = (a.reshape(N, 1, N) * b.T.reshape(1, N, N)).sum(axis=2); print((c.numpy() - (a.numpy() @ b.numpy())).mean())"
- - name: Repo line count <8500 lines
- run: MAX_LINE_COUNT=8500 python sz.py
-
- testopencl:
- strategy:
- fail-fast: false
- matrix:
- task: [optimage, onnx]
-
- name: ${{ matrix.task=='optimage'&&'GPU IMAGE+compile Tests' || matrix.task=='onnx'&&'ONNX+Optimization Tests' }}
- runs-on: ubuntu-20.04
- timeout-minutes: 10
-
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- - name: Install OpenCL
- run: |
- echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
- echo "deb [ allow-insecure=yes ] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
- sudo apt update || true
- sudo apt install --allow-unauthenticated -y --no-install-recommends \
- intel-oneapi-runtime-openmp=2023.2.1-16 intel-oneapi-runtime-compilers-common=2023.2.1-16 intel-oneapi-runtime-compilers=2023.2.1-16 \
- intel-oneapi-runtime-dpcpp-sycl-opencl-cpu=2023.2.1-16 intel-oneapi-runtime-tbb-common=2021.10.0-49541 \
- intel-oneapi-runtime-tbb=2021.10.0-49541 intel-oneapi-runtime-opencl=2023.2.1-16
- - name: Set up Python 3.11
- uses: actions/setup-python@v5
- with:
- python-version: 3.11
- - name: Cache python packages
- uses: actions/cache@v4
- with:
- path: ${{ env.Python3_ROOT_DIR }}/lib/python3.11/site-packages
- key: testing-packages-${{ hashFiles('**/setup.py') }}
- - name: Cache downloads
- uses: actions/cache@v4
- with:
- path: ~/.cache/tinygrad/downloads/
- key: downloads-cache-${{ matrix.task }}-${{ env.DOWNLOAD_CACHE_VERSION }}
- - name: Install Dependencies
- run: pip install -e '.[testing,testing_tf]' --extra-index-url https://download.pytorch.org/whl/cpu
- - if: ${{ matrix.task == 'optimage' }}
- name: Run Kernel Count Test
- run: PYTHONPATH="." GPU=1 python -m pytest -n=auto test/external/external_test_opt.py
- - if: ${{ matrix.task == 'optimage'}}
- name: Test WINO=1
- run: GPU=1 DEBUG=2 WINO=1 python3 test/test_ops.py TestOps.test_simple_conv2d
- - if: ${{ matrix.task == 'optimage'}}
- name: Test GPU IMAGE=2 ops + training
- run: |
- GPU=1 IMAGE=2 python -m pytest -n=auto test/test_ops.py
- GPU=1 IMAGE=2 python3 test/models/test_end2end.py TestEnd2End.test_linear_mnist
- - if: ${{ matrix.task == 'optimage' }}
- name: Test openpilot model compile and size
- run: |
- PYTHONPATH="." DEBUG=2 ALLOWED_KERNEL_COUNT=208 FLOAT16=1 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile2.py
- python -c 'import os; assert os.path.getsize("/tmp/output.thneed") < 100_000_000'
- - if: ${{ matrix.task == 'optimage' }}
- name: Test openpilot model correctness (float32)
- run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile2.py
- - if: ${{ matrix.task == 'optimage' }}
- name: Test openpilot alt model correctness (float32)
- run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile2.py https://github.com/commaai/openpilot/raw/3799fe46b3a629e491d4b8498b8ae83e4c88c304/selfdrive/modeld/models/supercombo.onnx
- - if: ${{ matrix.task == 'optimage' }}
- name: Test openpilot fastvits model correctness (float32)
- run: PYTHONPATH="." FLOAT16=0 DEBUGCL=1 GPU=1 IMAGE=2 python examples/openpilot/compile2.py https://github.com/commaai/openpilot/raw/9118973ed03c1ae1d40cf69a29507ec2cc78efd7/selfdrive/modeld/models/supercombo.onnx
- - if: ${{ matrix.task == 'optimage' }}
- name: Compile EfficientNet to C and test it
- run: |
- CLANG=1 PYTHONPATH="." python examples/compile_efficientnet.py > recognize.c
- clang -O2 recognize.c -lm -o recognize
- cat test/models/efficientnet/Chicken.jpg | ./recognize | grep cock
- - if: ${{ matrix.task == 'onnx' }}
- name: Test ONNX (GPU)
- run: GPU=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test ONNX (CLANG)
- run: CLANG=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test Action Space
- run: PYTHONPATH="." GPU=1 python3 extra/optimization/get_action_space.py
- - if: ${{ matrix.task == 'onnx' }}
- name: Test Beam Search
- run: PYTHONPATH="." GPU=1 IGNORE_BEAM_CACHE=1 python3 -m pytest extra/optimization/test_beam_search.py
- - if: ${{ matrix.task == 'onnx' }}
- name: Test MLPerf optimizers
- run: GPU=1 python -m pytest -n=auto test/external/external_test_optim.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test MLPerf losses
- run: GPU=1 python -m pytest -n=auto test/external/external_test_losses.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test MLPerf metrics
- run: GPU=1 python -m pytest -n=auto test/external/external_test_metrics.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test MLPerf datasets
- run: GPU=1 python -m pytest -n=auto test/external/external_test_datasets.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Test THREEFRY
- run: PYTHONPATH=. THREEFRY=1 GPU=1 python3 -m pytest test/test_randomness.py test/test_jit.py --durations=20
- - if: ${{ matrix.task == 'onnx' }}
- name: Run handcode_opt
- run: PYTHONPATH=. MODEL=resnet GPU=1 DEBUG=1 BS=4 HALF=0 python3 examples/handcode_opt.py
-
- #testwebgpu:
- # name: WebGPU Tests
- # runs-on: macos-13
- # timeout-minutes: 10
- # steps:
- # - name: Checkout Code
- # uses: actions/checkout@v4
- # - name: Set up Python 3.11
- # uses: actions/setup-python@v5
- # with:
- # python-version: 3.11
- # - name: Cache python packages
- # uses: actions/cache@v4
- # with:
- # path: /Users/runner/Library/Python/3.11/lib/python/site-packages
- # key: webgpu-testing-user3-packages-${{ hashFiles('**/setup.py') }}
- # - name: Install Dependencies
- # run: pip install --user -e '.[webgpu,testing]' --extra-index-url https://download.pytorch.org/whl/cpu
- # - name: Cache downloads
- # uses: actions/cache@v4
- # with:
- # path: ~/Library/Caches/tinygrad/downloads/
- # key: downloads-cache-webgpu-${{ env.DOWNLOAD_CACHE_VERSION }}
- # - name: Check Device.DEFAULT (WEBGPU) and print some source
- # run: |
- # WEBGPU=1 python -c "from tinygrad import Device; assert Device.DEFAULT == 'WEBGPU', Device.DEFAULT"
- # WEBGPU=1 DEBUG=4 FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add
- #- name: Run webgpu pytest
- # run: WEBGPU=1 WGPU_BACKEND_TYPE=Metal python -m pytest -n=auto
- # - name: Run selected webgpu tests
- # run: |
- # WEBGPU=1 WGPU_BACKEND_TYPE=Metal python -m pytest -n=auto test/test_ops.py test/test_dtype.py \
- # test/test_jit.py test/test_symbolic_ops.py test/test_symbolic_jit.py test/test_linearizer.py \
- # test/test_linearizer_failures.py test/test_nn.py
- # - name: Build WEBGPU Efficientnet
- # run: WEBGPU=1 WGPU_BACKEND_TYPE=Metal python -m examples.compile_efficientnet
- # - name: Install Puppeteer
- # run: npm install puppeteer
- # - name: Run WEBGPU Efficientnet
- # run: node test/web/test_webgpu.js
-
- testmetal:
- name: Metal Tests
- runs-on: macos-14
- timeout-minutes: 20
-
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- with:
- fetch-depth: 2 # NOTE: this fetches the HEAD commit of the PR
- - name: Set up Python 3.11
- uses: actions/setup-python@v5
- with:
- python-version: 3.11
- - name: Cache python packages
- uses: actions/cache@v4
- with:
- path: /Users/runner/Library/Python/3.11/lib/python/site-packages
- key: metal-m1-testing-user3-packages-${{ hashFiles('**/setup.py') }}
- - name: Install Dependencies
- run: pip install --user -e '.[testing]' --extra-index-url https://download.pytorch.org/whl/cpu
- - name: Cache downloads
- uses: actions/cache@v4
- with:
- path: ~/Library/Caches/tinygrad/downloads/
- key: downloads-cache-metal-only-${{ env.DOWNLOAD_CACHE_VERSION }}
- - name: Check Device.DEFAULT (METAL) and print some source
- run: |
- METAL=1 python -c "from tinygrad import Device; assert Device.DEFAULT == 'METAL', Device.DEFAULT"
- METAL=1 DEBUG=4 FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add
- - name: Run metal test
- run: JIT=2 METAL=1 python -m pytest -n=auto test/ --ignore=test/external --ignore=test/models --durations=20
- - name: Run real world test
- run: JIT=2 METAL=1 python -m pytest -n=auto test/models/test_real_world.py --durations=20
- - name: Run ONNX
- run: JIT=2 METAL=1 python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20
- - name: Test tensor core ops (fake)
- run: TC=2 METAL=1 DEBUG=3 python test/test_ops.py TestOps.test_gemm
- - name: Test tensor core ops (real)
- run: METAL=1 DEBUG=3 python test/test_ops.py TestOps.test_big_gemm
- - name: Test LLaMA compile speed
- run: PYTHONPATH="." METAL=1 python test/external/external_test_speed_llama.py
- - name: Test Beam Search
- run: PYTHONPATH="." METAL=1 IGNORE_BEAM_CACHE=1 python3 -m pytest extra/optimization/test_beam_search.py
- - name: Fuzz Test linearizer
- run: PYTHONPATH="." METAL=1 CACHELEVEL=0 FUZZ_ALL_ACTIONS=1 DEPTH=2 FUZZ_N=48 FUZZ_MAX_SIZE=10000000 python test/external/fuzz_linearizer.py
- - name: Fuzz Test models schedule
- run: FUZZ_SCHEDULE=1 FUZZ_SCHEDULE_MAX_PATHS=5 python -m pytest test/models/test_train.py test/models/test_end2end.py
- - name: Run TRANSCENDENTAL math
- run: TRANSCENDENTAL=2 python -m pytest -n=auto test/test_ops.py::TestOps::test_sin test/test_ops.py::TestOps::test_cos test/test_ops.py::TestOps::test_tan test/test_ops.py::TestOps::test_exp test/test_ops.py::TestOps::test_log --durations=20
- - name: Run process replay tests
- run: |
- export PR_TITLE=$(jq -r .pull_request.title "$GITHUB_EVENT_PATH")
- export COMMIT_MESSAGE=$(git show -s --format=%B ${{ github.event.pull_request.head.sha }})
- cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
-
-# testwebgl:
-# name: WebGL Tests
-# runs-on: ubuntu-latest
-# timeout-minutes: 10
-#
-# steps:
-# - name: Checkout Code
-# uses: actions/checkout@v3
-# - name: Set up Python 3.11
-# uses: actions/setup-python@v4
-# with:
-# python-version: 3.11
-# - name: Cache python packages
-# uses: actions/cache@v4
-# with:
-# path: ${{ env.Python3_ROOT_DIR }}/lib/python3.11/site-packages
-# key: webgl-testing-packages-${{ hashFiles('**/setup.py') }}
-# - name: Install Dependencies
-# run: pip install -e '.[webgl,testing]' --extra-index-url https://download.pytorch.org/whl/cpu
-# - name: Cache downloads
-# uses: actions/cache@v4
-# with:
-# path: ~/Library/Caches/tinygrad/downloads/
-# key: downloads-cache-webgl-${{ env.DOWNLOAD_CACHE_VERSION }}
-# - name: Prepare
-# run: |
-# sudo apt-get -y install xvfb
-# sudo /usr/bin/Xvfb :0 -screen 0 4096x4096x24+32 &
-# - name: Run selected webgl tests
-# run: WEBGL=1 python -m pytest -n=auto test/test_ops.py test/test_dtype.py test/test_jit.py
-# - name: Build WebGL Efficientnet
-# run: WEBGL=1 python -m examples.compile_efficientnet
-
- tests:
- strategy:
- fail-fast: false
- matrix:
- backend: [llvm, clang, gpu, ptx, amd, nv] #, triton]
-
- name: Tests on (${{ matrix.backend }})
- runs-on: ubuntu-latest
- timeout-minutes: 20
-
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
- with:
- fetch-depth: 2 # NOTE: this fetches the HEAD commit of the PR
- - name: Set up Python 3.11
- uses: actions/setup-python@v5
- with:
- python-version: 3.11
- - name: Cache python packages
- uses: actions/cache@v4
- with:
- path: ${{ env.Python3_ROOT_DIR }}/lib/python3.11/site-packages
- key: ${{ matrix.backend }}-packages-${{ hashFiles('**/setup.py') }}
- - name: Cache downloads
- uses: actions/cache@v4
- with:
- path: ~/.cache/tinygrad/downloads/
- key: downloads-cache-${{ matrix.backend }}-${{ env.DOWNLOAD_CACHE_VERSION }}
- - name: Set env
- run: printf "${{ matrix.backend == 'llvm' && 'LLVM=1' || matrix.backend == 'clang' && 'CLANG=1' || matrix.backend == 'gpu' && 'GPU=1' || matrix.backend == 'PTX' && 'FORWARD_ONLY=1\nJIT=1\nOPT=2\nNV=1\nPTX=1\nMOCKGPU=1' || matrix.backend == 'triton' && 'FORWARD_ONLY=1\nJIT=1\nOPT=2\nNV=1\nMOCKGPU=1\nTRITON=1\nTRITON_PTXAS_PATH=/usr/bin/ptxas' || matrix.backend == 'amd' && 'AMD=1\nMOCKGPU=1\nFORWARD_ONLY=1' || matrix.backend == 'nv' && 'NV=1\nMOCKGPU=1\nFORWARD_ONLY=1' }}" >> $GITHUB_ENV
- - name: Install OpenCL
- if: matrix.backend == 'gpu'
- run: |
- echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
- echo "deb [ allow-insecure=yes ] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
- sudo apt update || true
- sudo apt install --allow-unauthenticated -y --no-install-recommends opencl-headers \
- intel-oneapi-runtime-openmp=2023.2.1-16 intel-oneapi-runtime-compilers-common=2023.2.1-16 intel-oneapi-runtime-compilers=2023.2.1-16 \
- intel-oneapi-runtime-dpcpp-sycl-opencl-cpu=2023.2.1-16 intel-oneapi-runtime-tbb-common=2021.10.0-49541 \
- intel-oneapi-runtime-tbb=2021.10.0-49541 intel-oneapi-runtime-opencl=2023.2.1-16
- - name: Install packages (cuda)
- if: matrix.backend == 'ptx' || matrix.backend == 'triton' || matrix.backend == 'nv'
- run: |
- echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
- sudo apt update -y || true
- sudo apt install -y --no-install-recommends git g++ cmake ninja-build llvm-15-dev zlib1g-dev libglew-dev \
- flex bison libfl-dev libboost-thread-dev libboost-filesystem-dev nvidia-cuda-toolkit-gcc libzstd-dev
- - name: Cache gpuocelot
- if: matrix.backend == 'ptx' || matrix.backend == 'triton' || matrix.backend == 'nv'
- id: cache-build
- uses: actions/cache@v4
- env:
- cache-name: cache-gpuocelot-build
- with:
- path: ${{ github.workspace }}/gpuocelot/ocelot
- key: ubuntu22.04-gpuocelot-4524e34adb7eaccc6f71262f2e21d7052bb17c2f-rebuild-7
- - name: Clone/compile gpuocelot
- if: (matrix.backend == 'ptx' || matrix.backend == 'triton' || matrix.backend == 'nv') && steps.cache-build.outputs.cache-hit != 'true'
- run: |
- git clone --recurse-submodules https://github.com/gpuocelot/gpuocelot.git ${{ github.workspace }}/gpuocelot
- cd ${{ github.workspace }}/gpuocelot/ocelot
- git checkout 4524e34adb7eaccc6f71262f2e21d7052bb17c2f
- mkdir build
- cd build
- cmake .. -Wno-dev -G Ninja -DOCELOT_BUILD_TOOLS=OFF -DCMAKE_BUILD_ALWAYS=0 -DBUILD_TESTS_CUDA=OFF
- ninja
- - name: Install gpuocelot
- if: matrix.backend == 'ptx' || matrix.backend == 'triton' || matrix.backend == 'nv'
- run: |
- cd ${{ github.workspace }}/gpuocelot/ocelot/build
- sudo ninja install -d explain
- - name: Install packages (amd)
- if: matrix.backend == 'amd'
- run: |
- echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
- wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
- sudo tee /etc/apt/sources.list.d/rocm.list <<'EOF'
- deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.1.2 jammy main
- EOF
- echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600
- sudo apt update || true
- sudo apt install --no-install-recommends --allow-unauthenticated -y hsa-rocr comgr hsa-rocr-dev liburing-dev libc6-dev
- curl -s https://api.github.com/repos/Qazalin/remu/releases/latest | \
- jq -r '.assets[] | select(.name == "libremu.so").browser_download_url' | \
- sudo xargs curl -L -o /usr/local/lib/libremu.so
- sudo tee --append /etc/ld.so.conf.d/rocm.conf <<'EOF'
- /opt/rocm/lib
- /opt/rocm/lib64
- EOF
- sudo ldconfig
- - name: Install dependencies
- run: pip install -e '.[testing${{matrix.backend=='llvm'&&',llvm'||matrix.backend=='ptx'&&',cuda'||matrix.backend=='triton'&&',triton'||''}}]' --extra-index-url https://download.pytorch.org/whl/cpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/Triton-Nightly/pypi/simple/
- - name: Check Device.DEFAULT and print some source
- run: |
- PYTHONPATH=${{ github.workspace }} python3 -c "from tinygrad import Device; assert Device.DEFAULT in ['LLVM','CLANG','CUDA','GPU','AMD','NV'], Device.DEFAULT"
- DEBUG=5 PYTHONPATH=${{ github.workspace }} FORWARD_ONLY=1 python3 test/test_ops.py TestOps.test_add
- - name: Verify OpenCL autogen
- if: matrix.backend == 'gpu'
- run: |
- cp tinygrad/runtime/autogen/opencl.py /tmp/opencl.py.bak
- ./autogen_stubs.sh opencl
- diff /tmp/opencl.py.bak tinygrad/runtime/autogen/opencl.py
- - name: Verify CUDA autogen
- if: matrix.backend == 'nv'
- run: |
- cp tinygrad/runtime/autogen/cuda.py /tmp/cuda.py.bak
- cp tinygrad/runtime/autogen/nv_gpu.py /tmp/nv_gpu.py.bak
- ./autogen_stubs.sh cuda
- ./autogen_stubs.sh nv
- diff /tmp/cuda.py.bak tinygrad/runtime/autogen/cuda.py
- diff /tmp/nv_gpu.py.bak tinygrad/runtime/autogen/nv_gpu.py
- - name: Verify AMD autogen
- if: matrix.backend == 'amd'
- run: |
- cp tinygrad/runtime/autogen/hsa.py /tmp/hsa.py.bak
- cp tinygrad/runtime/autogen/comgr.py /tmp/comgr.py.bak
- cp tinygrad/runtime/autogen/amd_gpu.py /tmp/amd_gpu.py.bak
- ./autogen_stubs.sh hsa
- ./autogen_stubs.sh comgr
- ./autogen_stubs.sh amd
- diff /tmp/hsa.py.bak tinygrad/runtime/autogen/hsa.py
- diff /tmp/comgr.py.bak tinygrad/runtime/autogen/comgr.py
- diff /tmp/amd_gpu.py.bak tinygrad/runtime/autogen/amd_gpu.py
- - name: Verify Linux autogen
- if: matrix.backend == 'amd'
- run: |
- cp tinygrad/runtime/autogen/libc.py /tmp/libc.py.bak
- cp tinygrad/runtime/autogen/io_uring.py /tmp/io_uring.py.bak
- ./autogen_stubs.sh libc
- ./autogen_stubs.sh io_uring
- diff /tmp/libc.py.bak tinygrad/runtime/autogen/libc.py
- diff /tmp/io_uring.py.bak tinygrad/runtime/autogen/io_uring.py
- - name: Run pytest (not cuda or amd)
- if: matrix.backend!='ptx' && matrix.backend!='triton' && matrix.backend != 'amd' && matrix.backend != 'nv'
- run: python -m pytest -n=auto test/ --durations=20
- # - name: Run test_ops with FUZZ_UOPS=1
- # if: matrix.backend!='cuda' && matrix.backend!='ptx' && matrix.backend!='triton' && matrix.backend != 'amd' && matrix.backend != 'nv'
- # run: FUZZ_UOPS=1 python -m pytest -n=auto test/test_ops.py --durations=20
- - name: Run ONNX (only LLVM)
- if: matrix.backend == 'llvm'
- run: python -m pytest -n=auto test/external/external_test_onnx_backend.py --durations=20
- - name: Run pytest (cuda)
- if: matrix.backend=='ptx'||matrix.backend=='triton'||matrix.backend=='nv'
- run: python -m pytest -n=auto test/ -k 'not (half or test_efficientnet_safetensors)' --ignore=test/external --ignore=test/models --ignore test/test_gc.py --durations=20
- - name: Run pytest (amd)
- if: matrix.backend=='amd'
- run: python -m pytest -n=auto test/test_ops.py test/test_dtype.py test/test_dtype_alu.py test/test_linearizer.py test/test_randomness.py test/imported/test_indexing.py test/test_hcq.py --durations=20
- - name: Run TRANSCENDENTAL math
- run: TRANSCENDENTAL=2 python -m pytest -n=auto test/test_ops.py::TestOps::test_sin test/test_ops.py::TestOps::test_cos test/test_ops.py::TestOps::test_tan test/test_ops.py::TestOps::test_exp test/test_ops.py::TestOps::test_log --durations=20
- - name: Run process replay tests
- run: |
- export PR_TITLE=$(jq -r .pull_request.title "$GITHUB_EVENT_PATH")
- export COMMIT_MESSAGE=$(git show -s --format=%B ${{ github.event.pull_request.head.sha }})
- cp test/external/process_replay/process_replay.py ./process_replay.py && git fetch origin master && git -c advice.detachedHead=false checkout origin/master && PYTHONPATH=. python3 process_replay.py
-
- #testunicorn:
- # name: ARM64 unicorn Test
- # runs-on: ubuntu-latest
- # timeout-minutes: 10
- # steps:
- # - name: Checkout Code
- # uses: actions/checkout@v4
- # - name: Set up Python 3.11
- # uses: actions/setup-python@v5
- # with:
- # python-version: 3.11
- # - name: Cache python packages
- # uses: actions/cache@v4
- # with:
- # path: ${{ env.Python3_ROOT_DIR }}/lib/python3.11/site-packages
- # key: testing-arm-packages-${{ hashFiles('**/setup.py') }}
- # - name: Install cross-assembler
- # run: |
- # sudo apt update -y
- # sudo apt install -y --no-install-recommends gcc-aarch64-linux-gnu
- # - name: Install dependencies
- # run: pip install -e '.[testing,arm]' --extra-index-url https://download.pytorch.org/whl/cpu
- # - name: Test arm
- # run: CI=1 ARM64=1 CLANG=1 python -m pytest -n=auto test/ -k 'not (test_nn.py and (test_conv_transpose2d or test_conv2d))' --ignore=test/models --ignore=test/test_speed_v_torch.py --ignore=test/test_net_speed.py --ignore=test/test_specific_conv.py --ignore=test/unit/test_disk_tensor.py
diff --git a/tinychat/.gitignore b/tinychat/.gitignore
deleted file mode 100644
index 1dd8981a..00000000
--- a/tinychat/.gitignore
+++ /dev/null
@@ -1,56 +0,0 @@
-__pycache__
-.venv/
-.vscode
-.DS_Store
-notebooks
-.*.swp
-.*.swo
-*.pyc
-*.so
-*.txt
-build
-/dist
-*.egg-info
-/env
-a.out
-boxes.jpg
-pandecode.dump
-vertex.bin
-recognize*
-.idea
-*.prof
-extra/disassemblers/applegpu
-extra/datasets/cifar-10-python.tar.gz
-extra/datasets/librispeech/
-extra/datasets/imagenet/
-extra/datasets/wiki/
-extra/datasets/kits19
-extra/datasets/kits19/
-extra/datasets/squad/
-extra/datasets/img_align_celeba*
-extra/datasets/open-images-v6-mlperf
-extra/datasets/kits/
-extra/datasets/COCO/
-extra/datasets/audio*
-extra/weights
-venv
-examples/**/net.*[js,json]
-examples/**/*.safetensors
-node_modules
-package.json
-package-lock.json
-temp
-*.csv
-.coverage
-coverage.xml
-htmlcov
-outputs_yolov8
-wandb
-model.safetensors
-quickstart.py
-.hypothesis
-weights
-*.lprof
-comgr_*
-*.pkl
-site/
diff --git a/tinychat/.pre-commit-config.yaml b/tinychat/.pre-commit-config.yaml
deleted file mode 100644
index c6e967dd..00000000
--- a/tinychat/.pre-commit-config.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-repos:
- - repo: local
- hooks:
- - id: whitespace
- name: strip whitespace
- entry: find tinygrad -type f -name "*.py" -exec sed -i '' 's/ *$//' '{}' ';'
- language: system
- always_run: true
- pass_filenames: false
- - id: ruff
- name: ruff
- entry: ruff check .
- language: system
- always_run: true
- pass_filenames: false
- - id: mypy
- name: mypy
- entry: mypy tinygrad/ --strict-equality
- language: system
- always_run: true
- pass_filenames: false
- - id: docs2
- name: docs2
- entry: python3 docs/abstractions2.py
- language: system
- always_run: true
- pass_filenames: false
- - id: devicetests
- name: select GPU tests
- entry: env GPU=1 PYTHONPATH="." pytest test/test_uops.py test/test_custom_function.py test/test_search.py
- language: system
- always_run: true
- pass_filenames: false
- - id: tests
- name: subset of tests
- entry: env PYTHONPATH="." python3 -m pytest -n=4 test/unit/ test/test_ops.py test/test_dtype.py test/test_schedule.py test/test_custom_function.py test/test_assign.py test/test_symbolic_shapetracker.py
- language: system
- always_run: true
- pass_filenames: false
- - id: example
- name: multi device tests
- entry: python3 test/external/external_test_example.py
- language: system
- always_run: true
- pass_filenames: false
- - id: pylint
- name: pylint
- entry: env PYTHONPATH="." python3 -m pylint tinygrad/
- language: system
- always_run: true
- pass_filenames: false
\ No newline at end of file
diff --git a/tinychat/.pylintrc b/tinychat/.pylintrc
deleted file mode 100644
index b37388ce..00000000
--- a/tinychat/.pylintrc
+++ /dev/null
@@ -1,472 +0,0 @@
-[MASTER]
-
-# A comma-separated list of package or module names from where C extensions may
-# be loaded. Extensions are loading into the active Python interpreter and may
-# run arbitrary code
-extension-pkg-whitelist=scipy,cereal.messaging.messaging_pyx,PyQt5,av
-
-# Add files or directories to the blacklist. They should be base names, not
-# paths.
-ignore=CVS
-
-# Add files or directories matching the regex patterns to the blacklist. The
-# regex matches against base names, not paths.
-ignore-patterns=
-
-# Python code to execute, usually for sys.path manipulation such as
-# pygtk.require().
-#init-hook=
-
-# Use multiple processes to speed up Pylint.
-jobs=4
-
-# List of plugins (as comma separated values of python modules names) to load,
-# usually to register additional checkers.
-load-plugins=
-
-# Pickle collected data for later comparisons.
-persistent=yes
-
-# Specify a configuration file.
-#rcfile=
-
-# When enabled, pylint would attempt to guess common misconfiguration and emit
-# user-friendly hints instead of false-positive error messages
-suggestion-mode=yes
-
-# Allow loading of arbitrary C extensions. Extensions are imported into the
-# active Python interpreter and may run arbitrary code.
-unsafe-load-any-extension=no
-
-
-[MESSAGES CONTROL]
-
-# Only show warnings with the listed confidence levels. Leave empty to show
-# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
-confidence=
-
-# Disable the message, report, category or checker with the given id(s). You
-# can either give multiple identifiers separated by comma (,) or put this
-# option multiple times (only on the command line, not in the configuration
-# file where it should appear only once).You can also use "--disable=all" to
-# disable everything first and then reenable specific checks. For example, if
-# you want to run only the similarities checker, you can use "--disable=all
-# --enable=similarities". If you want to run only the classes checker, but have
-# no Warning level messages displayed, use"--disable=all --enable=classes
-# --disable=W"
-disable=C,R,W0613,W0511,W0212,W0201,W0106,W0603,W0621,W0703,W1201,W1203,E1136,W1514,E1101,W0221,W0105,E0401
-# E1101 for function binding
-# W0221 for Function class
-# W0105 for comment strings
-# E0401 for missing imports
-
-# Enable the message, report, category or checker with the given id(s). You can
-# either give multiple identifier separated by comma (,) or put this option
-# multiple time (only on the command line, not in the configuration file where
-# it should appear only once). See also the "--disable" option for examples.
-enable=c-extension-no-member,use-a-generator, no-else-return
-
-
-[REPORTS]
-
-# Python expression which should return a note less than 10 (10 is the highest
-# note). You have access to the variables errors warning, statement which
-# respectively contain the number of errors / warnings messages and the total
-# number of statements analyzed. This is used by the global evaluation report
-# (RP0004).
-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
-
-# Template used to display messages. This is a python new-style format string
-# used to format the message information. See doc for all details
-#msg-template=
-
-# Set the output format. Available formats are text, parseable, colorized, json
-# and msvs (visual studio).You can also give a reporter class, eg
-# mypackage.mymodule.MyReporterClass.
-output-format=text
-
-# Tells whether to display a full report or only the messages
-reports=no
-
-# Activate the evaluation score.
-score=yes
-
-
-[REFACTORING]
-
-# Maximum number of nested blocks for function / method body
-max-nested-blocks=5
-
-# Complete name of functions that never returns. When checking for
-# inconsistent-return-statements if a never returning function is called then
-# it will be considered as an explicit return statement and no message will be
-# printed.
-never-returning-functions=optparse.Values,sys.exit
-
-
-[LOGGING]
-
-# Logging modules to check that the string format arguments are in logging
-# function parameter format
-logging-modules=logging
-
-
-[SPELLING]
-
-# Limits count of emitted suggestions for spelling mistakes
-max-spelling-suggestions=4
-
-# Spelling dictionary name. Available dictionaries: none. To make it working
-# install python-enchant package.
-spelling-dict=
-
-# List of comma separated words that should not be checked.
-spelling-ignore-words=
-
-# A path to a file that contains private dictionary; one word per line.
-spelling-private-dict-file=
-
-# Tells whether to store unknown words to indicated private dictionary in
-# --spelling-private-dict-file option instead of raising a message.
-spelling-store-unknown-words=no
-
-
-[MISCELLANEOUS]
-
-# List of note tags to take in consideration, separated by a comma.
-notes=FIXME,
- XXX,
- TODO
-
-
-[SIMILARITIES]
-
-# Ignore comments when computing similarities.
-ignore-comments=yes
-
-# Ignore docstrings when computing similarities.
-ignore-docstrings=yes
-
-# Ignore imports when computing similarities.
-ignore-imports=no
-
-# Minimum lines number of a similarity.
-min-similarity-lines=4
-
-
-[TYPECHECK]
-
-# List of decorators that produce context managers, such as
-# contextlib.contextmanager. Add to this list to register other decorators that
-# produce valid context managers.
-contextmanager-decorators=contextlib.contextmanager
-
-# List of members which are set dynamically and missed by pylint inference
-# system, and so shouldn't trigger E1101 when accessed. Python regular
-# expressions are accepted.
-generated-members=capnp.* cereal.* pygame.* zmq.* setproctitle.* smbus2.* usb1.* serial.* cv2.* ft4222.* carla.*
-
-# Tells whether missing members accessed in mixin class should be ignored. A
-# mixin class is detected if its name ends with "mixin" (case insensitive).
-ignore-mixin-members=yes
-
-# This flag controls whether pylint should warn about no-member and similar
-# checks whenever an opaque object is returned when inferring. The inference
-# can return multiple potential results while evaluating a Python object, but
-# some branches might not be evaluated, which results in partial inference. In
-# that case, it might be useful to still emit no-member and other checks for
-# the rest of the inferred objects.
-ignore-on-opaque-inference=yes
-
-# List of class names for which member attributes should not be checked (useful
-# for classes with dynamically set attributes). This supports the use of
-# qualified names.
-ignored-classes=optparse.Values,thread._local,_thread._local
-
-# List of module names for which member attributes should not be checked
-# (useful for modules/projects where namespaces are manipulated during runtime
-# and thus existing member attributes cannot be deduced by static analysis. It
-# supports qualified module names, as well as Unix pattern matching.
-ignored-modules=flask setproctitle usb1 flask.ext.socketio smbus2 usb1.*
-
-# Show a hint with possible names when a member name was not found. The aspect
-# of finding the hint is based on edit distance.
-missing-member-hint=yes
-
-# The minimum edit distance a name should have in order to be considered a
-# similar match for a missing member name.
-missing-member-hint-distance=1
-
-# The total number of similar names that should be taken in consideration when
-# showing a hint for a missing member.
-missing-member-max-choices=1
-
-
-[VARIABLES]
-
-# List of additional names supposed to be defined in builtins. Remember that
-# you should avoid to define new builtins when possible.
-additional-builtins=
-
-# Tells whether unused global variables should be treated as a violation.
-allow-global-unused-variables=yes
-
-# List of strings which can identify a callback function by name. A callback
-# name must start or end with one of those strings.
-callbacks=cb_,
- _cb
-
-# A regular expression matching the name of dummy variables (i.e. expectedly
-# not used).
-dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
-
-# Argument names that match this expression will be ignored. Default to name
-# with leading underscore
-ignored-argument-names=_.*|^ignored_|^unused_
-
-# Tells whether we should check for unused import in __init__ files.
-init-import=no
-
-# List of qualified module names which can have objects that can redefine
-# builtins.
-redefining-builtins-modules=six.moves,past.builtins,future.builtins
-
-
-[FORMAT]
-
-# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
-expected-line-ending-format=
-
-# Regexp for a line that is allowed to be longer than the limit.
-ignore-long-lines=^\s*(# )?<?https?://\S+>?$
-
-# Number of spaces of indent required inside a hanging or continued line.
-indent-after-paren=4
-
-# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
-# tab).
-indent-string=' '
-
-# Maximum number of characters on a single line.
-max-line-length=150
-
-# Maximum number of lines in a module
-max-module-lines=1000
-
-# Allow the body of a class to be on the same line as the declaration if body
-# contains single statement.
-single-line-class-stmt=no
-
-# Allow the body of an if to be on the same line as the test if there is no
-# else.
-single-line-if-stmt=no
-
-
-[BASIC]
-
-# Naming style matching correct argument names
-argument-naming-style=snake_case
-
-# Regular expression matching correct argument names. Overrides argument-
-# naming-style
-#argument-rgx=
-
-# Naming style matching correct attribute names
-attr-naming-style=snake_case
-
-# Regular expression matching correct attribute names. Overrides attr-naming-
-# style
-#attr-rgx=
-
-# Bad variable names which should always be refused, separated by a comma
-bad-names=foo,
- bar,
- baz,
- toto,
- tutu,
- tata
-
-# Naming style matching correct class attribute names
-class-attribute-naming-style=any
-
-# Regular expression matching correct class attribute names. Overrides class-
-# attribute-naming-style
-#class-attribute-rgx=
-
-# Naming style matching correct class names
-class-naming-style=PascalCase
-
-# Regular expression matching correct class names. Overrides class-naming-style
-#class-rgx=
-
-# Naming style matching correct constant names
-const-naming-style=UPPER_CASE
-
-# Regular expression matching correct constant names. Overrides const-naming-
-# style
-#const-rgx=
-
-# Minimum line length for functions/classes that require docstrings, shorter
-# ones are exempt.
-docstring-min-length=-1
-
-# Naming style matching correct function names
-function-naming-style=snake_case
-
-# Regular expression matching correct function names. Overrides function-
-# naming-style
-#function-rgx=
-
-# Good variable names which should always be accepted, separated by a comma
-good-names=i,
- j,
- k,
- ex,
- Run,
- _
-
-# Include a hint for the correct naming format with invalid-name
-include-naming-hint=no
-
-# Naming style matching correct inline iteration names
-inlinevar-naming-style=any
-
-# Regular expression matching correct inline iteration names. Overrides
-# inlinevar-naming-style
-#inlinevar-rgx=
-
-# Naming style matching correct method names
-method-naming-style=snake_case
-
-# Regular expression matching correct method names. Overrides method-naming-
-# style
-#method-rgx=
-
-# Naming style matching correct module names
-module-naming-style=snake_case
-
-# Regular expression matching correct module names. Overrides module-naming-
-# style
-#module-rgx=
-
-# Colon-delimited sets of names that determine each other's naming style when
-# the name regexes allow several styles.
-name-group=
-
-# Regular expression which should only match function or class names that do
-# not require a docstring.
-no-docstring-rgx=^_
-
-# List of decorators that produce properties, such as abc.abstractproperty. Add
-# to this list to register other decorators that produce valid properties.
-property-classes=abc.abstractproperty
-
-# Naming style matching correct variable names
-variable-naming-style=snake_case
-
-# Regular expression matching correct variable names. Overrides variable-
-# naming-style
-#variable-rgx=
-
-
-[DESIGN]
-
-# Maximum number of arguments for function / method
-max-args=5
-
-# Maximum number of attributes for a class (see R0902).
-max-attributes=7
-
-# Maximum number of boolean expressions in a if statement
-max-bool-expr=5
-
-# Maximum number of branch for function / method body
-max-branches=12
-
-# Maximum number of locals for function / method body
-max-locals=15
-
-# Maximum number of parents for a class (see R0901).
-max-parents=7
-
-# Maximum number of public methods for a class (see R0904).
-max-public-methods=20
-
-# Maximum number of return / yield for function / method body
-max-returns=6
-
-# Maximum number of statements in function / method body
-max-statements=50
-
-# Minimum number of public methods for a class (see R0903).
-min-public-methods=2
-
-
-[CLASSES]
-
-# List of method names used to declare (i.e. assign) instance attributes.
-defining-attr-methods=__init__,
- __new__,
- setUp
-
-# List of member names, which should be excluded from the protected access
-# warning.
-exclude-protected=_asdict,
- _fields,
- _replace,
- _source,
- _make
-
-# List of valid names for the first argument in a class method.
-valid-classmethod-first-arg=cls
-
-# List of valid names for the first argument in a metaclass class method.
-valid-metaclass-classmethod-first-arg=mcs
-
-
-[IMPORTS]
-
-# Allow wildcard imports from modules that define __all__.
-allow-wildcard-with-all=no
-
-# Analyse import fallback blocks. This can be used to support both Python 2 and
-# 3 compatible code, which means that the block might have code that exists
-# only in one or another interpreter, leading to false positives when analysed.
-analyse-fallback-blocks=no
-
-# Deprecated modules which should not be used, separated by a comma
-deprecated-modules=regsub,
- TERMIOS,
- Bastion,
- rexec
-
-# Create a graph of external dependencies in the given file (report RP0402 must
-# not be disabled)
-ext-import-graph=
-
-# Create a graph of every (i.e. internal and external) dependencies in the
-# given file (report RP0402 must not be disabled)
-import-graph=
-
-# Create a graph of internal dependencies in the given file (report RP0402 must
-# not be disabled)
-int-import-graph=
-
-# Force import order to recognize a module as part of the standard
-# compatibility libraries.
-known-standard-library=
-
-# Force import order to recognize a module as part of a third party library.
-known-third-party=enchant
-
-[STRING]
-
-# This flag controls whether the implicit-str-concat should generate a warning
-# on implicit string concatenation in sequences defined over several lines.
-check-str-concat-over-line-jumps=yes
-
-[EXCEPTIONS]
-
-# Exceptions that will emit a warning when being caught. Defaults to
-# "Exception"
-overgeneral-exceptions=builtins.Exception
← c2fcee43 only retail examples/tinychat from tinygrad subtree
·
back to Exo
·
serve tinychat static a94bdbb9 →