Instructions to use socialtrait/flux-3-image-klein-infendpoint with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use socialtrait/flux-3-image-klein-infendpoint with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("socialtrait/flux-3-image-klein-infendpoint", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
Download clone_checkpoint.py from socialtrait/flux-3-image-klein-infendpoint: direct link, hf CLI and curl.
- Browser
- Download file 5.45 kB
-
https://huggingface.co/socialtrait/flux-3-image-klein-infendpoint/resolve/main/clone_checkpoint.py
- Command line
-
hf download hf://socialtrait/flux-3-image-klein-infendpoint/clone_checkpoint.py
-
curl -L -o clone_checkpoint.py https://huggingface.co/socialtrait/flux-3-image-klein-infendpoint/resolve/main/clone_checkpoint.py
5.45 kB
| """Full, pinned Socialtrait checkpoint with one on-disk copy of each LFS object. | |
| Install huggingface_hub and git-lfs, authenticate with `hf auth login`, then: | |
| python clone_checkpoint.py /path/with/at-least-31-GiB-free/flux3-klein | |
| Do not edit weight files in place: the checkout and LFS store use hardlinks. | |
| """ | |
| import argparse | |
| import hashlib | |
| import json | |
| import os | |
| from pathlib import Path | |
| import shutil | |
| import subprocess | |
| from huggingface_hub import HfApi, get_token, hf_hub_download | |
| from model_config import UPSTREAM as REPO, REVISION | |
| OVERLAY = ('model_config.py', 'flux3_engine.py', 'handler.py', 'web.py', 'modal_app.py', | |
| 'requirements.txt', 'prompts.json', 'README.md', 'DEPLOYMENT.txt', | |
| 'verify_checkpoint.py', 'validate_deployment.py') | |
| def digest(path): | |
| sha = hashlib.sha256() | |
| with path.open('rb') as source: | |
| for chunk in iter(lambda: source.read(8 * 1024 * 1024), b''): | |
| sha.update(chunk) | |
| return sha.hexdigest() | |
| def main(): | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument('destination', type=Path) | |
| parser.add_argument('--reserve-gib', type=float, default=5, | |
| help='Free disk space to retain after download (default: 5 GiB).') | |
| args = parser.parse_args() | |
| destination = args.destination.expanduser().resolve() | |
| token = get_token() | |
| if not token: | |
| raise SystemExit('Authenticate first with hf auth login; do not put a token in this command.') | |
| info = HfApi(token=token).model_info(REPO, revision=REVISION, files_metadata=True) | |
| files = list(info.siblings) | |
| # A prior partial clone is resumable only if our identity marker matches. | |
| identity = {'repo': REPO, 'revision': REVISION} | |
| marker = destination / '.git' / 'full-checkpoint-identity.json' | |
| if destination.exists() and any(destination.iterdir()): | |
| if not marker.exists() or json.loads(marker.read_text()) != identity: | |
| raise SystemExit('Destination is not a matching checkpoint clone. Choose an empty directory.') | |
| needed = 0 | |
| for item in files: | |
| if item.lfs: | |
| sha = item.lfs.sha256 | |
| obj = destination / '.git/lfs/objects' / sha[:2] / sha[2:4] / sha | |
| if not obj.exists() or obj.stat().st_size != item.size: | |
| needed += item.size | |
| parent = destination | |
| while not parent.exists(): | |
| parent = parent.parent | |
| free = shutil.disk_usage(parent).free | |
| reserve = max(args.reserve_gib, 0) * 2**30 | |
| if free < needed + reserve: | |
| raise SystemExit(f'Need {needed/2**30:.2f} GiB plus {reserve/2**30:.1f} GiB reserve; ' | |
| f'only {free/2**30:.2f} GiB free. Select a larger disk.') | |
| env = os.environ.copy() | |
| env.update(GIT_LFS_SKIP_SMUDGE='1', GIT_TERMINAL_PROMPT='0', | |
| GIT_CONFIG_COUNT='1', GIT_CONFIG_KEY_0='http.https://huggingface.co/.extraheader', | |
| GIT_CONFIG_VALUE_0=f'Authorization: Bearer {token}') | |
| if not marker.exists(): | |
| destination.parent.mkdir(parents=True, exist_ok=True) | |
| subprocess.run(['git', 'clone', '--no-checkout', f'https://huggingface.co/{REPO}', | |
| str(destination)], env=env, check=True) | |
| subprocess.run(['git', '-C', str(destination), 'checkout', REVISION], env=env, check=True) | |
| marker.write_text(json.dumps(identity)) | |
| staging = destination / '.git' / 'hf-download' | |
| inventory = [] | |
| for index, item in enumerate(files, 1): | |
| target = destination / item.rfilename | |
| if item.lfs: | |
| sha = item.lfs.sha256 | |
| obj = destination / '.git/lfs/objects' / sha[:2] / sha[2:4] / sha | |
| obj.parent.mkdir(parents=True, exist_ok=True) | |
| if not obj.exists(): | |
| download = Path(hf_hub_download(REPO, item.rfilename, revision=REVISION, | |
| token=token, local_dir=staging)) | |
| if digest(download) != sha: | |
| raise RuntimeError(f'Checksum mismatch: {item.rfilename}') | |
| os.replace(download, obj) | |
| elif obj.stat().st_size != item.size or digest(obj) != sha: | |
| raise RuntimeError(f'Existing LFS object failed verification: {item.rfilename}') | |
| target.parent.mkdir(parents=True, exist_ok=True) | |
| if target.exists(): | |
| target.unlink() | |
| os.link(obj, target) | |
| if not target.is_file() or target.stat().st_size != item.size: | |
| raise RuntimeError(f'Missing or incomplete file: {item.rfilename}') | |
| inventory.append({'path': item.rfilename, 'bytes': item.size, | |
| 'sha256': item.lfs.sha256 if item.lfs else None}) | |
| print(f'[{index}/{len(files)}] Verified {item.rfilename}', flush=True) | |
| (destination / 'checkpoint_inventory.json').write_text(json.dumps( | |
| {**identity, 'files': inventory}, indent=2) + '\n') | |
| source = Path(__file__).resolve().parent | |
| for name in OVERLAY: | |
| shutil.copy2(source / name, destination / name) | |
| with (destination / '.git/info/exclude').open('a') as exclude: | |
| exclude.write('\n.env*\n__pycache__/\nbenchmark_outputs/\n') | |
| print(f'Complete checkpoint and deployment files: {destination}') | |
| print('Socialtrait BF16/Q8 weights, tokenizers, configurations, licenses and notices retained.') | |
| print('No repository has been uploaded or made public.') | |
| if __name__ == '__main__': | |
| main() | |