Instructions to use BiliSakura/GeoCore-9B-diffusers with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use BiliSakura/GeoCore-9B-diffusers with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("BiliSakura/GeoCore-9B-diffusers", dtype=torch.bfloat16, device_map="cuda") prompt = "A parking lot full of cars is located next to some trees." image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
Configuration Parsing Warning:In UNKNOWN_FILENAME: "diffusers._class_name" must be a string
BiliSakura/GeoCore-9B-diffusers
Self-contained Diffusers checkpoint for GeoCore-9B: 256×256 optical satellite generation from text, with optional GSD, latitude, and longitude.
Converted from JeonghyeokDo/GeoCore-9B. DiffusionPipeline.from_pretrained loads the DiT, Flux.2 VAE, CLIP-L, T5-XXL, and FlowMatchEulerDiscreteScheduler from this repo (trust_remote_code=True).
Project · Code · Original weights

- Prompt
- A parking lot full of cars is located next to some trees.

- Prompt
- Many buildings are located in a commercial area.

- Prompt
- A roundabout is surrounded by grass.

- Prompt
- Two tennis courts are semi-surrounded by several green trees.
Demo
256×256, 50 Euler steps, guidance_scale=4.0, seed 42, lon=126.97, lat=37.56, res=0.0 (Seoul).
Model details
| Field | Value |
|---|---|
| Pipeline | GeoCorePipeline (pipeline.py) |
| Transformer | Flow-matching DiT, 8 double-stream + 24 single-stream blocks, hidden 4096, 32 heads, 9.24B |
| Text encoders | CLIP ViT-L/14 + T5-XXL (bundled) |
| VAE | Flux.2 AutoencoderKLFlux2 (Apache-2.0, bundled) |
| Scheduler | FlowMatchEulerDiscreteScheduler, shift=1.0 |
| Resolution | 256×256 |
| Training data | Git-10M |
| License | Apache-2.0 |
Load from Hugging Face
import torch
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(
"BiliSakura/GeoCore-9B-diffusers",
trust_remote_code=True,
torch_dtype=torch.bfloat16,
).to("cuda")
image = pipe(
prompt="A parking lot full of cars is located next to some trees.",
lon=126.97,
lat=37.56,
res=0.0,
height=256,
width=256,
num_inference_steps=50,
guidance_scale=4.0,
generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]
image.save("demo.png")
The DiT is ~18.5 GB in bf16. A 24 GB GPU is tight; on two GPUs, split only the transformer with Accelerate and keep CLIP, T5, and the VAE on one device.
Conditioning
Captions follow the Git-10M style (short scene descriptions). Geospatial fields are optional.
| Argument | Meaning |
|---|---|
prompt |
Natural-language description |
res |
Resolution index 17 - z for Google XYZ zoom z. 0 ≈ 1.2 m/px at the equator; each +1 doubles GSD |
lon, lat |
Degrees |
-999.0 |
Learned null embedding — any of res / lon / lat may be omitted |
License
DiT weights © 2026 Jeonghyeok Do and Munchurl Kim, Apache-2.0. VAE is an unmodified Apache-2.0 Flux.2 autoencoder from black-forest-labs/FLUX.2-klein-base-4B; see LICENSE-FLUX2-VAE.md. Git-10M is CC BY-NC-ND 4.0 (non-commercial retraining).
Citation
@article{do2026geocore,
title = {GeoCore-9B: Towards Geo-Aware Generative Foundation Models in Earth Observation},
author = {Do, Jeonghyeok and Kim, Munchurl},
year = {2026}
}
- Downloads last month
- 11



