Initial commit
parents
Showing
.dockerignore
0 → 100644
.env.local
0 → 100644
.gitattributes
0 → 100644
.github/CODE_OF_CONDUCT.md
0 → 100644
.github/CONTRIBUTING.md
0 → 100644
.github/ISSUE_TEMPLATE/1-bug-report.yml
0 → 100644
.github/ISSUE_TEMPLATE/2-feature-request.yml
0 → 100644
.github/ISSUE_TEMPLATE/config.yml
0 → 100644
.github/PULL_REQUEST_TEMPLATE.md
0 → 100644
.github/SECURITY.md
0 → 100644
.github/workflows/docker.yml
0 → 100644
.github/workflows/label_issue.yml
0 → 100644
.github/workflows/publish.yml
0 → 100644
.github/workflows/tests.yml
0 → 100644
.gitignore
0 → 100644
.pre-commit-config.yaml
0 → 100644
CITATION.cff
0 → 100644
LICENSE
0 → 100644
This diff is collapsed.
Click to expand it.
MANIFEST.in
0 → 100644
Makefile
0 → 100644
README.md
0 → 100644
This diff is collapsed.
Click to expand it.
README_zh.md
0 → 100644
This diff is collapsed.
Click to expand it.
assets/alaya_new.svg
0 → 100644
This diff is collapsed.
Click to expand it.
assets/logo.png
0 → 100644
55.5 KB
assets/wechat.jpg
0 → 100644
167 KB
assets/wechat_alaya.png
0 → 100644
209 KB
assets/wechat_npu.jpg
0 → 100644
168 KB
data/README.md
0 → 100644
This diff is collapsed.
Click to expand it.
data/README_zh.md
0 → 100644
This diff is collapsed.
Click to expand it.
data/alpaca_en_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/alpaca_zh_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/belle_multiturn/belle_multiturn.py
0 → 100644
data/c4_demo.jsonl
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/dataset_info.json
0 → 100644
This diff is collapsed.
Click to expand it.
data/dpo_en_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/dpo_zh_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/glaive_toolcall_en_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/glaive_toolcall_zh_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/hh_rlhf_en/hh_rlhf_en.py
0 → 100644
data/identity.json
0 → 100644
This diff is collapsed.
Click to expand it.
data/kto_en_demo.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
data/mllm_audio_demo.json
0 → 100644
data/mllm_demo.json
0 → 100644
data/mllm_demo_data/1.jpg
0 → 100644
12 KB
data/mllm_demo_data/1.mp3
0 → 100644
File added
data/mllm_demo_data/1.mp4
0 → 100644
File added
data/mllm_demo_data/2.avi
0 → 100644
File added
data/mllm_demo_data/2.jpg
0 → 100644
22.1 KB
data/mllm_demo_data/2.wav
0 → 100644
File added
data/mllm_demo_data/3.flac
0 → 100644
File added
data/mllm_demo_data/3.jpg
0 → 100644
15.7 KB
data/mllm_demo_data/3.mp4
0 → 100644
File added
data/mllm_demo_data/4.mp3
0 → 100644
File added
data/mllm_demo_data/4.mp4
0 → 100644
File added
data/mllm_video_audio_demo.json
0 → 100644
data/mllm_video_demo.json
0 → 100644
data/ultra_chat/ultra_chat.py
0 → 100644
data/wiki_demo.txt
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
docker/docker-cuda/Dockerfile
0 → 100644
docker/docker-cuda/Dockerfile.base
0 → 100644
docker/docker-cuda/docker-compose.yml
0 → 100644
docker/docker-npu/Dockerfile
0 → 100644
docker/docker-npu/docker-compose.yml
0 → 100644
docker/docker-rocm/Dockerfile
0 → 100644
docker/docker-rocm/docker-compose.yml
0 → 100644
evaluation/ceval/ceval.py
0 → 100644
evaluation/ceval/ceval.zip
0 → 100644
File added
evaluation/ceval/mapping.json
0 → 100644
evaluation/cmmlu/cmmlu.py
0 → 100644
evaluation/cmmlu/cmmlu.zip
0 → 100644
File added
evaluation/cmmlu/mapping.json
0 → 100644
evaluation/mmlu/mapping.json
0 → 100644
evaluation/mmlu/mmlu.py
0 → 100644
evaluation/mmlu/mmlu.zip
0 → 100644
File added
examples/README.md
0 → 100644
examples/README_zh.md
0 → 100644
examples/accelerate/fsdp_config.yaml
0 → 100644
examples/accelerate/fsdp_config_offload.yaml
0 → 100644
examples/deepspeed/ds_z0_config.json
0 → 100644
examples/deepspeed/ds_z2_config.json
0 → 100644
examples/deepspeed/ds_z2_offload_config.json
0 → 100644
examples/deepspeed/ds_z3_config.json
0 → 100644
examples/deepspeed/ds_z3_offload_config.json
0 → 100644
examples/extras/apollo/llama3_full_sft.yaml
0 → 100644
examples/extras/badam/llama3_full_sft.yaml
0 → 100644
examples/extras/fsdp_qlora/train.sh
0 → 100644
examples/extras/galore/llama3_full_sft.yaml
0 → 100644
examples/extras/llama_pro/expand.sh
0 → 100644
examples/extras/mod/llama3_full_sft.yaml
0 → 100644
examples/extras/muon/qwen2_full_sft.yaml
0 → 100644
examples/extras/pissa/init.sh
0 → 100644
examples/extras/pissa/llama3_lora_sft.yaml
0 → 100644
examples/inference/llama3.yaml
0 → 100644
examples/inference/llama3_full_sft.yaml
0 → 100644
examples/inference/llama3_lora_sft.yaml
0 → 100644
examples/inference/qwen2_5vl.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/merge_lora/llama3_full_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/merge_lora/llama3_gptq.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/merge_lora/llama3_lora_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/merge_lora/qwen2_5vl_lora_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_full/llama3_full_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_full/qwen2_5vl_full_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_dpo.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_eval.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_kto.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_ppo.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_reward.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_sft.sh
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_sft_ds3.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_lora_sft_ray.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama3_preprocess.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/llama4_lora_sft_ds3.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/qwen2_5vl_lora_dpo.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
examples/train_lora/qwen2_5vl_lora_sft.yaml
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
pyproject.toml
0 → 100644
This diff is collapsed.
Click to expand it.
requirements.txt
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/api_example/test_image.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/api_example/test_toolcall.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/convert_ckpt/llamafy_baichuan2.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/convert_ckpt/llamafy_qwen.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/convert_ckpt/tiny_llama4.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/eval_bleu_rouge.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/llama_pro.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/loftq_init.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/pissa_init.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/qwen_omni_merge.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/stat_utils/cal_flops.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/stat_utils/cal_lr.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/stat_utils/cal_mfu.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/stat_utils/cal_ppl.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/stat_utils/length_cdf.py
0 → 100644
This diff is collapsed.
Click to expand it.
scripts/vllm_infer.py
0 → 100644
This diff is collapsed.
Click to expand it.
setup.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/api.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/api/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/api/app.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/api/chat.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/api/common.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/api/protocol.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/base_engine.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/chat_model.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/hf_engine.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/sglang_engine.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/chat/vllm_engine.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/cli.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/collator.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/converter.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/data_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/formatter.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/loader.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/mm_plugin.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/parser.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/processor/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/processor/feedback.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/processor/pairwise.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/processor/pretrain.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/data/template.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/data/tool_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/eval/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/eval/evaluator.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/eval/template.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/constants.py
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
src/llamafactory/extras/env.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/logging.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/misc.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/packages.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/extras/ploting.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/data_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/evaluation_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/finetuning_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/generating_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/model_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/parser.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/hparams/training_args.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/launcher.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/adapter.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/loader.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/model/model_utils/misc.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/model_utils/mod.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/model_utils/moe.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/model/model_utils/rope.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/model/model_utils/visual.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/model/patcher.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/third_party/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/third_party/muon/muon.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/callbacks.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/dpo/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/dpo/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/dpo/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/kto/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/kto/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/kto/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/ppo/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/ppo/ppo_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/ppo/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/ppo/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/pt/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/pt/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/pt/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/rm/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/rm/metric.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/rm/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/rm/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/sft/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/sft/metric.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/sft/trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/sft/workflow.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/test_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/trainer_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/train/tuner.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/__init__.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/chatter.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/common.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/chatbot.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/data.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/eval.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/export.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/infer.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/top.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/components/train.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/control.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/css.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/engine.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/interface.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/locales.py
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
src/llamafactory/webui/manager.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/llamafactory/webui/runner.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/train.py
0 → 100644
This diff is collapsed.
Click to expand it.
src/webui.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/check_license.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/processor/test_feedback.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/processor/test_pairwise.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/processor/test_processor_utils.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/processor/test_supervised.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/processor/test_unsupervised.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_collator.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_converter.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_formatter.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_loader.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_mm_plugin.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/data/test_template.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/e2e/test_chat.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/e2e/test_sglang.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/e2e/test_train.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/eval/test_eval_template.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/model_utils/test_add_tokens.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/model_utils/test_attention.py
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
tests/model/model_utils/test_misc.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/model_utils/test_packing.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/model_utils/test_visual.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/test_base.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/test_freeze.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/test_full.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/test_lora.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/model/test_pissa.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/train/test_sft_trainer.py
0 → 100644
This diff is collapsed.
Click to expand it.
tests/version.txt
0 → 100644
This diff is collapsed.
Click to expand it.