How to convert PDFs to Markdown with Marker on a cloud GPU

Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install Marker from the official datalab-to/marker repository the way the README prints, let the first GPU-mode run start the inference server the README describes, and run marker_single or marker. Copy the output folder off the instance before you destroy it, because destroying the instance deletes its disk.

A different converter, whose README prints no minimum GPU GB figure and whose CLI writes a Markdown file in the working directory, is How to convert PDFs and documents with Docling on a cloud GPU. A pipeline whose README says at least 12 GB of GPU RAM is How to convert PDFs to text with olmOCR on a cloud GPU. Another PDF converter, whose README states 8 GB+ VRAM on two standard rows, is How to convert PDFs to Markdown with MinerU on a cloud GPU. Copy documents on and results off with How to transfer files to a cloud GPU. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU.

The repository LICENSE file is the Apache License, Version 2.0. The appendix copyright line is still the unfilled template Copyright [yyyy] [name of copyright owner]. The README says: “Our code is licensed under Apache 2.0 — free to use, including commercially.” The GitHub license field on 2026-11-13 was Apache-2.0. pyproject.toml sets license text to Apache-2.0, name to marker-pdf, and version to 2.2.0. MODEL_LICENSE is titled AI PUBS OPEN RAIL-M LICENSE (MODIFIED). Its commercial restriction says you agree not to use the Model if you generated more than five million US Dollars ($5,000,000) in gross revenue in the prior year, or if you have raised more than five million US dollars ($5,000,000) in total equity or debt funding, except where that use is limited to personal use or research purposes. The README summarizes that weight license as “a modified AI Pubs Open Rail-M license (free for research, personal use, and startups under $5M funding/revenue).” The README then links a vendor pricing page for commercial use of the weights beyond that text. This page does not copy rates from that page. Read both files before you redistribute the program or the weights.

The commands below are copied from the upstream files named in each step. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked.

What the README says about memory

The README, marker/settings.py, marker/scripts/convert_single.py, and marker/output.py print no GPU GB figure (read 2026-11-13). The README says Marker works on GPU, CPU, or MPS. --mode balanced is the default on GPU. --mode fast is the default on CPU and MPS. The performance section prints pages-per-second figures and scores. This page does not copy those numbers. The mode bullets also print pages-per-second figures. This page does not copy those either. One batch bullet contains a cost word. This page does not copy that word. benchmarks/competitors/mineru_infer.sh assigns MINERU_VIRTUAL_VRAM_SIZE. This page does not copy that value and does not treat it as a Marker GPU requirement. marker/scripts/convert.py says the inference server owns the VRAM and does not print a GB figure.

GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from gpu-prices.json, updated_at 2026-11-13T12:00:35.593Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T12:00:36.648Z) listed the same names and the same vram_gb values, plus Ascend 910B at 64, which is not in gpu-prices.json and is not listed here. The catalog response also includes an availability field. This page does not copy it. Every prices row has gpu_count 1. The smallest vram_gb in that file is 8, on RTX 2080. This page did not run Marker and does not mark a row as enough. Which listing you can start is on Deploy.

The catalog template list had no Marker template.

Catalog name vram_gb
RTX 2080 8
RTX 3080 10
RTX 2080 Ti 11
RTX 3080 Ti 12
V100 16G 16
A30 24
RTX 3090 24
RTX 4090 24
RTX 4090D 24
RTX 4080 SUPER 32G 32
RTX 5090 32
RTX 5090D 32
V100 32G 32
A100 40G 40
A800 40G 40
A40 48
RTX 4090 48G 48
RTX 4090D 48G 48
RTX A6000 48
NVIDIA RTX PRO 5000 72G 72
RTX PRO 5000 72G 72
A100 80G 80
A800 80G 80
H800 80
RTX 6000D 83
H20 96G 96
RTX PRO 6000 96G 96
RTX PRO 6000 Max-Q 96
H20-3e 141G 141

Install

On Deploy, choose Raw GPU. The README says you need Python 3.10+ and PyTorch, then this install. pyproject.toml sets requires-python to >=3.10,<4 and depends on torch>=2.7.0,<3. The README install line does not pin a package version and does not select a CUDA wheel index. version in that file is 2.2.0. This page did not run the install and does not state which release pip install marker-pdf resolves to. The dependency list also names client packages. This page does not print those names.

pip install marker-pdf

Documents other than PDFs, copied:

pip install marker-pdf[full]

The README says balanced and vllm modes spawn a local Surya inference server on first use: vLLM via Docker on an NVIDIA GPU, and llama.cpp elsewhere. The NVIDIA prerequisite it prints is Docker plus the NVIDIA Container Toolkit. It also prints SURYA_INFERENCE_BACKEND as vllm or llamacpp, VLLM_GPUS for GPU indices, and SURYA_INFERENCE_URL=http://host:port/v1 for an already-running server. This page did not start that server. The commits API for the default branch master listed f20c54a81bf8b1a8bd12fd954be1aaa4b7015203, committed 2026-11-12T17:45:34Z. README.md is that same commit.

The RTX 5090 guide says that card is compute capability 12.0 (sm_120) and that PyTorch 2.7 and later, on a build for CUDA 12.8 or newer, is the line that announced support. pyproject.toml allows torch>=2.7.0,<3 and the README does not select a CUDA wheel index. This page did not re-test Marker on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.

The documented CLI

The README’s single-file command, copied. It says you can pass PDFs or images.

marker_single /path/to/file.pdf

--mode accepts auto, no_ocr, fast, balanced, and vllm. The README says the default is balanced on GPU and fast on CPU or MPS. --output_format accepts markdown, json, html, and chunks. --output_dir is the directory where output files are saved and defaults to settings.OUTPUT_DIR. --stdout writes the converted text to stdout instead of a directory. --llm_service is used when --use_llm is passed. The README’s default for that flag is a class path this page does not print. Copy it from the README if you pass --use_llm.

marker/settings.py sets OUTPUT_DIR to os.path.join(BASE_DIR, "conversion_results"). BASE_DIR is os.path.dirname(os.path.dirname(os.path.abspath(__file__))) in that file, so it is the parent of the directory that contains settings.py. ConfigParser.get_output_folder reads output_dir or that default, joins the input file’s stem, and creates the directory. save_output writes {stem}.{ext} and {stem}_meta.json into that folder, then each image. For markdown output, text_from_rendered uses the extension md.

The batch command, copied:

marker /path/to/input/folder

The one-GPU bullet’s command, copied. The rest of that bullet includes a cost word this page does not copy. The same bullet also names --mode fast for mostly-digital corpora.

marker /folder --output_dir out

--workers is the number of conversion workers. The troubleshooting section says that if you are getting out of memory errors during batch conversion, decrease the worker count, for example marker /folder --workers 1.

Web UI

The README’s viewer, copied. marker/scripts/run_streamlit_app.py defaults --host to 127.0.0.1 and --port to 8000, and uvicorn.run receives those two values. The README says to open http://localhost:8000. It also says to pass --streamlit for the legacy Streamlit UI. This page did not start the viewer.

marker_gui --port 8000

Forward that port with how to use SSH port forwarding on a cloud GPU. pyproject.toml also registers marker_server as marker.scripts.server:server_cli. This page did not read a host or port default out of a separate server entrypoint beyond the viewer file above.

ComfyUI

The README does not document a ComfyUI install. The ComfyUI examples top-level directory list on 2026-11-13 had no directory named for this project. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3, committed 2025-11-26T20:33:58Z. Installing ComfyUI itself is How to install ComfyUI and ComfyUI-Manager on a cloud GPU. This page does not add a ComfyUI install.

When it fails

CUDA out of memory. The README prints no GPU GB figure. Its batch troubleshooting line is marker /folder --workers 1. If the process raises that error, use how to fix CUDA out of memory on a cloud GPU.

“CUDA error: no kernel image is available for execution on the device” on an RTX 5090. See the install section. This page did not re-test the package on that card.

Save the exports, then destroy

A single file without --output_dir is written under settings.OUTPUT_DIR, which joins BASE_DIR and conversion_results, then a directory named with the file stem. The files in that directory are {stem}.md for the default markdown format, {stem}_meta.json, and the extracted images. --stdout does not write that directory. --output_dir out on the batch command uses out instead of the default. Copy the folder you want before you destroy the instance. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

The pricing page FAQ states the billing rule in these words:

Per-minute options have a 1-minute minimum; unused prepaid minutes are refunded when you destroy the instance. Some configurations use whole-hour billing with a 1-hour minimum; unused time within a charged hour is not refunded on voluntary stop. The billing period, minimum charge and initial prepayment are shown before confirmation. No subscription.

Frequently asked questions

What GPU memory figure does the Marker documentation state?

The README, marker/settings.py, marker/scripts/convert_single.py, and marker/output.py print no GPU GB figure. The README says Marker works on GPU, CPU, or MPS, with balanced as the GPU default and fast as the CPU and MPS default. The performance section and the mode bullets print pages-per-second figures and scores. This page does not copy those numbers. benchmarks/competitors/mineru_infer.sh assigns MINERU_VIRTUAL_VRAM_SIZE. This page does not copy that value and does not treat it as a Marker GPU requirement. The smallest vram_gb in gpu-prices.json (updated_at 2026-11-13T12:00:35.593Z) is 8, on RTX 2080. This page did not run Marker and does not mark a row as enough. Which listing you can start is on https://cloudgpu.app/deploy.

Which commands convert a PDF, and where are the files written?

The README install is pip install marker-pdf. It says you need Python 3.10+ and PyTorch. pyproject.toml requires Python >=3.10,<4, depends on torch>=2.7.0,<3, and sets version to 2.2.0. The single-file command is marker_single /path/to/file.pdf. The batch command is marker /path/to/input/folder. --output_format accepts markdown, json, html, and chunks. settings.OUTPUT_DIR joins BASE_DIR and conversion_results. get_output_folder then joins the input stem and creates that directory. save_output writes the stem plus the format extension, the stem plus _meta.json, and the images. For markdown the extension is md. --stdout writes to the terminal instead. This page did not run the commands.

How does the documentation select a GPU mode, and does it document a web UI?

The mode flag accepts auto, no_ocr, fast, balanced, and vllm. The README says balanced is the default on GPU and fast is the default on CPU or MPS. balanced and vllm spawn a local Surya server: vLLM via Docker on an NVIDIA GPU, and llama.cpp elsewhere. The viewer command is marker_gui --port 8000. run_streamlit_app.py defaults --host to 127.0.0.1 and --port to 8000. The README says to open http://localhost:8000, and to pass --streamlit for the legacy Streamlit UI. The README does not document ComfyUI. The ComfyUI examples top-level directory list on 2026-11-13 had no directory named for this project. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3.

Which licenses cover the Marker code and the model weights?

The repository LICENSE file is the Apache License, Version 2.0. The appendix copyright line is the unfilled template Copyright [yyyy] [name of copyright owner]. The README says: Our code is licensed under Apache 2.0 — free to use, including commercially. The GitHub license field on 2026-11-13 was Apache-2.0. pyproject.toml sets the license text to Apache-2.0. MODEL_LICENSE is a modified AI Pubs Open Rail-M license. Its commercial restriction names more than five million US Dollars ($5,000,000) in gross revenue in the prior year, and more than five million US dollars ($5,000,000) in total equity or debt funding, with a personal-use and research exception in that file. The README summarizes that weight license as a modified AI Pubs Open Rail-M license (free for research, personal use, and startups under $5M funding/revenue). Those dollar figures, and the word free in those README sentences, are the upstream license text, not a CloudGPU price and not a storage allowance. Read both files before you redistribute the program or the weights.

Sources (read 2026-11-13, Asia/Shanghai)

  • Marker README (pip install marker-pdf, marker_single, marker, marker_gui --port 8000, modes, output formats, Apache 2.0 for the code, the weight-license summary): https://github.com/datalab-to/marker/blob/master/README.md commit f20c54a81bf8b1a8bd12fd954be1aaa4b7015203. Repository HEAD is that commit, committed 2026-11-12T17:45:34Z
  • marker/settings.py (OUTPUT_DIR joins BASE_DIR and conversion_results): same commit f20c54a81bf8b1a8bd12fd954be1aaa4b7015203
  • marker/config/parser.py (get_output_folder joins the file stem): same commit
  • marker/output.py (save_output writes {stem}.{ext} and {stem}_meta.json): commit 619377f17d9619253712d68fcd26e55e83830e0d
  • marker/scripts/convert_single.py and marker/scripts/run_streamlit_app.py (host 127.0.0.1, port 8000): commit f20c54a81bf8b1a8bd12fd954be1aaa4b7015203
  • pyproject.toml (marker-pdf 2.2.0, Apache-2.0, requires-python >=3.10,<4, torch>=2.7.0,<3, scripts marker, marker_single, marker_gui): same commit
  • LICENSE (Apache 2.0, unfilled copyright template): commit 65f73c993dd021704aed14e1330b9f147a05ebac. GitHub license field Apache-2.0
  • MODEL_LICENSE (modified AI Pubs Open Rail-M, the two five-million-dollar commercial restrictions): commit 619377f17d9619253712d68fcd26e55e83830e0d
  • ComfyUI examples top-level directories (no Marker directory): https://github.com/comfyanonymous/ComfyUI_examples commit f9431bb000ce792094ff345446e22cac1ea6cef3
  • Public GPU memory: https://cloudgpu.app/gpu-prices.json (updated_at 2026-11-13T12:00:35.593Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at 2026-11-13T12:00:36.648Z). GET /v1/public/compute-capabilities returned feature flags and no GPU list. The catalog had no Marker template

Cards you can start are on the Deploy page. Prices are on https://cloudgpu.app/pricing and are not repeated here.

Last updated: 2026-11-13 (Asia/Shanghai).