sgl-project / sgl-project/SpecForge

[Feature] Better remote dev experience

Open
#402 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.2k
Forks
347
Avg merge
4d 1h
Merged PRs (30d)
41

Description

Checklist
Motivation

There are some areas of improvements while getting on board for and developing SpecForge.

  • The current setup steps isn't clearly documented, which may slow down the on board process. A markdown can be helpful for both the beginners of SpecForge and of remote dev with .devcontainer.
  • The dev Dockerfile can also be improved to support the remote dev experience.
    1. Using the sglang image as the base will lead to many package search duplications. Even though pip install will show Requirement already satisfied, spending time traversing/resolving package list can be easily simplified by a layer of docker cache.
    2. Dockerfile should configure the virtual environment properly. The SpecForge virtual environment isn't set in the PATH variable, which makes the command like pip calling the global pip command (confusingly, python and pip3 points to the virtual environment executables).
    3. Dockerfile should install SpecForge-specific dependencies itself. The virtual environment activated in the above step seems to inherit directly from SGLang. However, SpecForge has its own dependencies to install. Baking dependency installation in Dockerfile can reuse build caches on the remote machine to reduce build time.
    4. The steps to execute training examples are not clear. At least two steps are necessary after mounting to the remote container (after it is built properly and the venv is activated):
      1. Generate a dataset, e.g. python scripts/prepare_data.py --dataset sharegpt
      2. Hugging face login huggingface-cli login
      3. Execute bash examples/run_llama3.1_8b_eagle3_online.sh

Therefore

  • .devcontainer/Dockerfile should contain virtual environment setup commands.
  • A markdown file can be introduced as a on-board guide.
Related resources

A new comer's on board & dev experience by cloning the SpecForge repo to the remote machine and then Dev Container: Open Folder in a Container.

Note:

  • Dev Containers: Clone repo in a container will not work because of a bug saying Docker api is 1.41. This may also complicate the git credentials setup.
  • Dev Containers: Attach to a Running Container: Git repo does not exist and git credentials also do not exist. Also the environment is not setup for SpecForge - dependencies need to be installed manually (Yet Dockerfile provides build caches).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .devcontainer/Dockerfile and the setup requirements described in the issue, including virtual-environment PATH configuration and SpecForge dependency installation. Then document the remote-container onboarding steps, including dataset preparation, Hugging Face login, and the listed training example command. Done means the Dockerfile uses build caching effectively and a newcomer can follow the markdown guide to run the example.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
build-system, developer-experience, devops, documentation
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.