Skip to content

Instantly share code, notes, and snippets.

View aredden's full-sized avatar
:octocat:
Building awesome things.

Alex Redden aredden

:octocat:
Building awesome things.
  • Remote
View GitHub Profile
@aredden
aredden / fp8_linear_quantile.py
Created August 24, 2024 15:57
quantize fp8 using quantile vs absmax for very ood values
import torch
torch.set_printoptions(precision=4, sci_mode=False)
import triton
import triton.language as tl
from torch import Tensor
def quanitze_fp8_tensorwise(x: torch.Tensor, dtype=torch.float8_e4m3fn):
scale = x.abs().max() / torch.finfo(dtype).max
@aredden
aredden / cuda_python_cudart_types.py
Created March 12, 2024 22:07
NVIDIA cuda-python's cudart typings for their untyped cpp bound library.
from typing import List, Any
import enum
from cuda import cudart
CUDART_VERSION = 12020
CUDA_EGL_MAX_PLANES = 3
CUDA_IPC_HANDLE_SIZE = 64
@aredden
aredden / image_rotate_into_gif.py
Last active November 22, 2023 04:59
Rotate an image and save as a gif using pytorch
import numpy as np
import torch
from torchvision.transforms import functional as F
from PIL import Image
image_path = "./117.webp"
num_images = 32
total_rot = 360
rot_step = total_rot / num_images
@aredden
aredden / wrap_func_dtype.py
Created September 23, 2023 01:04
pytorch function to perform wrapped casting for functions which require specific dtypes (flash attention 2)
from functools import wraps
from typing import Any, Dict, Iterable, Optional, Tuple, TypeVar
import torch
T = TypeVar("T", bound=callable)
ref_map = {
torch.float64: [torch.float16,torch.float32,torch.bfloat16,torch.half],
torch.float32: [torch.float16,torch.bfloat16,torch.half],
torch.float16: [],
torch.bfloat16: [],
@aredden
aredden / pytorch_colormap.py
Last active May 21, 2023 01:33
Helper class for efficiently creating a torch.uint8 colormaped (H, W, 3) image (entirely on device) from a (H, W) float32 tensor
import torch
from einops import rearrange
_magma_table = [
(0.001462, 0.000466, 0.013866),
(0.002258, 0.001295, 0.018331),
(0.003279, 0.002305, 0.023708),
(0.004512, 0.003490, 0.029965),
(0.005950, 0.004843, 0.037130),
(0.007588, 0.006356, 0.044973),
@aredden
aredden / make_image_pathlist.py
Last active May 11, 2023 14:28
cli app for generating a list of 'absolute-imagepath textfile-row-index' from a local directory, optionally recursive search, (helpful for nvidia dali file reader)
from pathlib import Path
from argparse import ArgumentParser
from typing import Optional
from pydantic import BaseModel
class Args(BaseModel):
input_path: Path
recursive: bool = False
output_file: Optional[Path]
extensions: list[str] = ['jpeg','jpg','png','webp']
@aredden
aredden / face_crop_curate.py
Created November 3, 2022 20:09
cli tool for easily cropping faces to 512x512 for ML dataset generation (textual inversion / dreambooth)
import argparse
from typing import List, Union
import cv2, os, pathlib
from PIL import Image
from loguru import logger
from more_itertools import flatten
from mediapipe.python.solutions.face_detection import FaceDetection
import numpy as np
from traceback import format_exception
@aredden
aredden / asyncparallel.py
Last active September 26, 2022 01:39
python parallel-limit style async generator function
from typing import AsyncGenerator, List, Coroutine, Any, Callable, Union
import asyncio
from loguru import logger
async def async_limit_iterator(
limit=8,
jobs: List[Any] = [],
coroutine_fn: Callable[[Any], Coroutine[Any, None, None]] = None,
throw_exceptions: bool = False,
@aredden
aredden / clip_interrogator-w-checkpointing-adjectives.ipynb
Created August 15, 2022 15:21
clip_Interrogator-w/-checkpointing+adjectives.ipynb
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@aredden
aredden / png-metadata-read-write.js
Created July 24, 2022 03:06
Functions for reading or writing png exif metadata
const { ExifTool, Tags } = require('exiftool-vendored');
/**
* Function to write makernote and exif data to a PNG file.
* @param {string} filePath - Path to the PNG file.
* @param {string} makerNote - Makernote exif key data to write.
* @param {string} comment - Comment exif key data to write.
* @return {Promise<boolean>} - True if successful, false otherwise.
*/
export const writeMetadata = async (filePath, makerNote, comment) => {
const tool = new ExifTool();