Skip to content

Commit c81b2df

Browse files
natolambertclaude
andauthored
Fix diagrams Makefile and remove unused diagrams (#223)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent c37db8a commit c81b2df

File tree

3 files changed

+37
-805
lines changed

3 files changed

+37
-805
lines changed

diagrams/Makefile

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@
33
# Usage:
44
# make all - Generate all diagrams
55
# make tokens - Generate token strip diagrams
6+
# make tikz - Generate TikZ diagrams
7+
# make figures - Generate standalone figure scripts
68
# make clean - Remove generated files
79

810
GENERATED_DIR := generated
911

10-
.PHONY: all tokens grpo tikz clean help
12+
.PHONY: all tokens tikz figures clean help
1113

1214
# LaTeX engine path (adjust if different on your system)
1315
PDFLATEX := $(shell which pdflatex || echo "/usr/local/texlive/2023basic/bin/universal-darwin/pdflatex")
1416

15-
all: tokens grpo tikz
17+
all: tokens tikz figures
1618
@echo "All diagrams generated in $(GENERATED_DIR)/"
1719

1820
# Token strip diagrams - requires matplotlib
@@ -28,38 +30,44 @@ tokens: | $(GENERATED_DIR)
2830
uv run python scripts/generate_multilane_strips.py --output-dir $(GENERATED_DIR)/svg --format svg
2931
@echo "Token strip diagrams generated (PNG in png/, SVG in svg/)"
3032

31-
# PPO vs GRPO architecture comparison diagram (matplotlib version)
32-
# Based on DeepSeek-Math/GRPO paper Figure 1
33-
grpo: | $(GENERATED_DIR)
33+
# Standalone figure scripts (cartpole, tool_use)
34+
figures: | $(GENERATED_DIR)
3435
@mkdir -p $(GENERATED_DIR)/png $(GENERATED_DIR)/svg
35-
uv run python scripts/generate_ppo_grpo.py --output-dir $(GENERATED_DIR)/png --format png
36-
uv run python scripts/generate_ppo_grpo.py --output-dir $(GENERATED_DIR)/svg --format svg
37-
@echo "PPO vs GRPO diagram generated (matplotlib)"
36+
uv run python scripts/generate_cartpole.py --output-dir $(GENERATED_DIR)/png --format png
37+
uv run python scripts/generate_cartpole.py --output-dir $(GENERATED_DIR)/svg --format svg
38+
uv run python scripts/generate_tool_use.py --output-dir $(GENERATED_DIR)/png --format png
39+
uv run python scripts/generate_tool_use.py --output-dir $(GENERATED_DIR)/svg --format svg
40+
@echo "Standalone figures generated (PNG in png/, SVG in svg/)"
3841

3942
# TikZ diagrams - requires pdflatex and convert (ImageMagick) or sips (macOS)
4043
# Compiles .tex files in tikz/ to PDF, then converts to 400dpi PNG
4144
# SVG conversion requires pdf2svg (brew install pdf2svg)
4245
tikz: | $(GENERATED_DIR)
4346
@mkdir -p $(GENERATED_DIR)/png $(GENERATED_DIR)/svg $(GENERATED_DIR)/pdf
44-
@for texfile in tikz/*_tikz_test.tex; do \
47+
@for texfile in tikz/*_tikz.tex; do \
4548
if [ -f "$$texfile" ]; then \
46-
base=$$(basename "$$texfile" _tikz_test.tex); \
47-
echo "Compiling $${base}_tikz..."; \
49+
base=$$(basename "$$texfile" .tex); \
50+
echo "Compiling $${base}..."; \
4851
cd tikz && $(PDFLATEX) -interaction=nonstopmode $$(basename $$texfile) > /dev/null 2>&1; cd ..; \
49-
cp tikz/$${base}_tikz_test.pdf $(GENERATED_DIR)/pdf/$${base}_tikz.pdf; \
50-
if command -v magick > /dev/null; then \
51-
magick -density 400 tikz/$${base}_tikz_test.pdf -trim -quality 100 $(GENERATED_DIR)/png/$${base}_tikz.png; \
52-
echo " -> $(GENERATED_DIR)/png/$${base}_tikz.png (400dpi, trimmed)"; \
53-
elif command -v convert > /dev/null; then \
54-
convert -density 400 tikz/$${base}_tikz_test.pdf -trim -quality 100 $(GENERATED_DIR)/png/$${base}_tikz.png; \
55-
echo " -> $(GENERATED_DIR)/png/$${base}_tikz.png (400dpi, trimmed)"; \
56-
elif command -v sips > /dev/null; then \
57-
sips -s format png tikz/$${base}_tikz_test.pdf --out $(GENERATED_DIR)/png/$${base}_tikz.png > /dev/null 2>&1; \
58-
fi; \
59-
if command -v pdf2svg > /dev/null; then \
60-
pdf2svg tikz/$${base}_tikz_test.pdf $(GENERATED_DIR)/svg/$${base}_tikz.svg; \
52+
if [ -f "tikz/$${base}.pdf" ]; then \
53+
cp tikz/$${base}.pdf $(GENERATED_DIR)/pdf/$${base}.pdf; \
54+
if command -v magick > /dev/null; then \
55+
magick -density 400 tikz/$${base}.pdf -trim -quality 100 $(GENERATED_DIR)/png/$${base}.png; \
56+
echo " -> $(GENERATED_DIR)/png/$${base}.png (400dpi, trimmed)"; \
57+
elif command -v convert > /dev/null; then \
58+
convert -density 400 tikz/$${base}.pdf -trim -quality 100 $(GENERATED_DIR)/png/$${base}.png; \
59+
echo " -> $(GENERATED_DIR)/png/$${base}.png (400dpi, trimmed)"; \
60+
elif command -v sips > /dev/null; then \
61+
sips -s format png tikz/$${base}.pdf --out $(GENERATED_DIR)/png/$${base}.png > /dev/null 2>&1; \
62+
fi; \
63+
if command -v pdf2svg > /dev/null; then \
64+
pdf2svg tikz/$${base}.pdf $(GENERATED_DIR)/svg/$${base}.svg; \
65+
echo " -> $(GENERATED_DIR)/svg/$${base}.svg"; \
66+
else \
67+
echo " (skipping SVG - install pdf2svg: brew install pdf2svg)"; \
68+
fi; \
6169
else \
62-
echo " (skipping SVG - install pdf2svg: brew install pdf2svg)"; \
70+
echo " ERROR: PDF not generated for $${base}"; \
6371
fi; \
6472
rm -f tikz/*.aux tikz/*.log; \
6573
fi \
@@ -73,17 +81,18 @@ $(GENERATED_DIR):
7381
# Clean generated files
7482
clean:
7583
rm -rf $(GENERATED_DIR)/*
76-
@echo "Cleaned $(GENERATED_DIR)/"
84+
rm -f tikz/*.pdf tikz/*.aux tikz/*.log
85+
@echo "Cleaned $(GENERATED_DIR)/ and tikz/*.pdf"
7786

7887
# Help
7988
help:
8089
@echo "RLHF Book Diagram Generator"
8190
@echo ""
8291
@echo "Targets:"
8392
@echo " all - Generate all diagrams"
84-
@echo " tokens - Generate token strip diagrams"
85-
@echo " grpo - Generate PPO vs GRPO diagram (matplotlib)"
86-
@echo " tikz - Generate TikZ diagrams (ppo_grpo_tikz, etc.)"
93+
@echo " tokens - Generate token strip diagrams (reward models)"
94+
@echo " tikz - Generate TikZ diagrams (policy gradients, distillation)"
95+
@echo " figures - Generate standalone figures (cartpole, tool_use)"
8796
@echo " clean - Remove generated files"
8897
@echo ""
8998
@echo "Requirements:"

0 commit comments

Comments
 (0)