[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82153":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},82153,"LogicPipe","fxyz666\u002FLogicPipe","fxyz666","LogicPipe 是一个面向边缘多设备协同 LLM 推理的开源软件项目，提供离线管线规划、分布式 stage 权重加载、依赖感知任务调度和上下文 KV cache 复用能力。",null,"Python",198,90,73,0,163,5.88,false,"main",true,[],"2026-06-12 02:04:23","# LogicPipe\n\n一句话简介 — LogicPipe 是一个面向边缘多设备协同 LLM 推理的开源软件项目，提供离线管线规划、分布式 stage 权重加载、依赖感知任务调度和上下文 KV cache 复用能力。\n\n## 项目功能介绍\n\nLogicPipe 用于在多张 GPU 或多台边缘设备上运行协同 LLM 推理。项目会把模型的连续 transformer 层切分成多个 stage，每个 rank 只加载并执行自己的层段权重；推理时各 stage 通过 `torch.distributed` 传递 activation、候选 token 和新生成 token。\n\n在普通单请求生成中，pipeline parallel 容易出现 stage 空闲。LogicPipe 通过结构化 outline 将一个复杂请求拆成多个带依赖关系的 point，并用 DAG scheduler 管理 ready queue。依赖已经满足的 point 会被送入 pipeline 执行；完成后的输出和 contextual KV cache 会被保存，后继 point 启动时可以复用前驱上下文，从而在并行执行和逻辑连贯之间取得平衡。\n\n项目目前支持 prefill、point prefill、Medusa\u002FMBSD decoding、stage 权重切分、离线规划 artifact 复用，以及 `--load_in_4bit` \u002F `--load_in_8bit` 量化加载参数。\n\n## 项目亮点\n\n- 离线管线规划：根据层数、设备数、计算\u002F通信\u002F内存估计规划生成 `PartitionPlan`，并保存为可复用 artifact。\n- 多 rank stage 加载：`tools\u002Fmodel_partition.py` 将完整模型权重切成各 rank 的 `stage.bin`，运行时只加载本地层段。\n- 依赖感知调度：outline 被解析为 DAG，只有依赖满足的 point 才会进入执行队列。\n- 上下文 KV cache 复用：point 完成后导出 contextual cache，后继 point 可以注入前驱上下文。\n- Pipeline 内部加速：Medusa\u002FMBSD decoding 直接集成在 pipeline 执行路径中。\n- Prefill 管线优化：支持长 prompt 的序列内切片 prefill，减少 prefill 阶段空泡。\n- 量化友好：入口保留 `--load_in_4bit` 和 `--load_in_8bit`，方便在显存有限环境中测试。\n\n## 适用场景\n\n- 多 GPU 或多设备上的 LLM pipeline parallel 推理实验。\n- 依赖型推理任务的 DAG 调度、上下文复用和并行解码研究。\n\n\n## 运行模式\n\n- 离线规划模式：`logicpipe.offline.pipeline.OfflinePipelinePlanner` 生成或复用 `artifacts\u002Flogicpipe\u002Foffline_plan.json`。\n- 权重切分模式：`tools\u002Fmodel_partition.py` 根据 `stage_num_hidden_layers_list` 生成各 rank 的 `stage.bin`。\n- 多 rank 在线推理模式：多个进程同时运行 `logicpipe_main.py`，每个进程指定不同 `--rank`。\n- DAG 协同推理模式：`logicpipe.orchestrator` 生成 outline、注册 point、调度 ready task 并复用上下文 cache。\n- 量化测试模式：启动时加入 `--load_in_4bit` 或 `--load_in_8bit`，降低权重加载显存占用。\n\n## 快速开始\n\n### 基础依赖安装\n\n1. 创建并进入 Python 环境。推荐使用 Python 3.10 或更新版本。\n\n```powershell\nconda create -n logicpipe python=3.10\nconda activate logicpipe\n```\n\n2. 通过 `requirements.txt` 安装项目依赖。\n\n```powershell\npip install -r requirements.txt\n```\n\n3. 检查 PyTorch 和 Transformers 是否可用。\n\n```powershell\npython -c \"import torch, transformers; print(torch.__version__, transformers.__version__, torch.cuda.is_available())\"\n```\n\n### 配置基础模型\n\n1. 将基础模型权重放到 `model\u002F` 目录下。\n\n\n\n2. 修改模型配置文件中的权重路径。\n\n```json\n{\n  \"base_model_name_or_path\": \".\u002Fmodel\u002F\u003Cmodel-name>\u002Fbase\",\n}\n```\n\n3. 确认配置中的 pipeline 参数和启动规模一致。\n\n```json\n{\n  \"stage_num_hidden_layers_list\": [8, 8, 8, 8],\n  \"init_method\": \"tcp:\u002F\u002F127.0.0.1:23000\",\n  \"distributed_backend\": \"gloo\",\n  \"device\": \"cuda\"\n}\n```\n\n### Offline Planning\n\n1. 根据配置文件生成各 rank 的 stage 权重。\n\n```powershell\npython tools\\model_partition.py --config_file \u003Cmodel-config>\n```\n\n2. 检查 stage 权重是否生成。目录名中的 `\u003Cmodel_type>` 由配置文件和 `tools.utils.get_model_type()` 决定。\n\n```powershell\nTest-Path temp_\u003Cmodel_type>_world_4_rank_0\\stage.bin\nTest-Path temp_\u003Cmodel_type>_world_4_rank_1\\stage.bin\nTest-Path temp_\u003Cmodel_type>_world_4_rank_2\\stage.bin\nTest-Path temp_\u003Cmodel_type>_world_4_rank_3\\stage.bin\n```\n\n3. 首次在线启动时，LogicPipe 会生成 `artifacts\u002Flogicpipe\u002Foffline_plan.json`；之后可通过 `--reuse_offline_artifact` 复用该规划结果。\n\n### Online Inference\n\n当前示例按 4 个 rank 启动，因此建议配置文件中的 `stage_num_hidden_layers_list` 也包含 4 个 stage，并使用 `--world 4 --num_stages 4`。如果配置文件中的 `init_method` 端口被占用，先换成空闲端口。\n\n使用 `logicpipe_main.py` 启动在线推理。先用短问题和 4bit 做 smoke test，分别启动 4 个进程：\n\n```powershell\npython logicpipe_main.py --rank 0 --world 4 --num_stages 4 --reuse_offline_artifact --load_in_4bit --question \"2+2?\"\npython logicpipe_main.py --rank 1 --world 4 --num_stages 4 --reuse_offline_artifact --load_in_4bit --question \"2+2?\"\npython logicpipe_main.py --rank 2 --world 4 --num_stages 4 --reuse_offline_artifact --load_in_4bit --question \"2+2?\"\npython logicpipe_main.py --rank 3 --world 4 --num_stages 4 --reuse_offline_artifact --load_in_4bit --question \"2+2?\"\n```\n\n## 仓库结构\n\n```text\n.\n├── LOGICPIPE.md\n│   └── LogicPipe 项目说明文档。\n├── requirements.txt\n│   └── Python 基础依赖列表。\n├── logicpipe_main.py\n│   └── CLI 入口，解析 rank\u002Fworld\u002Fconfig\u002F量化参数并启动协同推理流程。\n├── pipeline_inference.py\n│   └── 传统 pipeline 推理入口和工具函数调用示例。\n├── logicpipe\u002F\n│   ├── __init__.py\n│   │   └── 导出 LogicPipeOrchestrator 和 LogicPipeResult。\n│   ├── orchestrator.py\n│   │   └── 端到端编排：离线规划、runtime 构建、outline 生成、DAG 调度、KV cache 注入和解码循环。\n│   ├── runner.py\n│   │   └── 初始化分布式环境，校验启动参数，加载当前 rank 的 stage 权重。\n│   ├── context.py\n│   │   └── 保存 args\u002Fconfig\u002Fmodel\u002Ftokenizer 等运行时上下文。\n│   ├── types.py\n│   │   └── 定义 ResourceProfile、PartitionPlan 和 OfflineArtifactMetadata。\n│   ├── offline\u002F\n│   │   ├── pipeline.py\n│   │   │   └── 离线规划入口，串联资源画像、分区求解和 artifact 读写。\n│   │   ├── profiler.py\n│   │   │   └── 生成计算、通信、内存相关的资源画像。\n│   │   ├── partition_dp.py\n│   │   │   └── DP 分区求解器，输出连续层段和设备选择结果。\n│   │   └── artifact.py\n│   │       └── 保存\u002F加载 `artifacts\u002Flogicpipe\u002Foffline_plan.json` 并校验 metadata。\n│   └── online\u002F\n│       ├── prefill_engine.py\n│       │   └── 封装 skeleton prompt、shared prefix 和 point prompt 的 prefill。\n│       ├── dag_scheduler.py\n│       │   └── 管理 DAG task、ready queue、dispatch\u002Fcompletion 状态和 controller。\n│       └── branch_decoder.py\n│           └── Skeleton\u002Fbranch decoding 抽象，复用 Medusa self-draft decoding。\n├── core\u002F\n│   ├── __init__.py\n│   │   └── 核心 pipeline 包初始化文件。\n│   ├── utils.py\n│   │   └── prefill、point prefill、normal decoding 和 outline decoding 的高层工具函数。\n│   ├── prefilling_pipeline.py\n│   │   └── 序列内 prefill 分区和 point saturation 逻辑。\n│   ├── decoding_pipeline.py\n│   │   └── 管线 decoding step，处理 tree candidates、tree decoding、新 token 同步和 point 完成状态。\n│   └── core\u002F\n│       ├── communication.py\n│       │   └── Prefill 阶段 stage 间 activation 和 sequence length 通信。\n│       ├── decoding_communication.py\n│       │   └── Decoding 阶段 point-aware 通信。\n│       ├── schedules.py\n│       │   └── PipelineRuntime，封装 rank 间发送\u002F接收和 activation padding。\n│       ├── tag_manager.py\n│       │   └── 分布式通信 tag 分配。\n│       └── threadsafe_queue.py\n│           └── 通信 helper 使用的线程安全队列。\n├── tasks\u002Fmedusa_llama\u002F\n│   ├── config\u002F\n│   │   └── 基础模型运行配置文件。\n│   ├── llama_config.py\n│   │   └── LLaMA\u002FMedusa 配置类和 pipeline stage 参数更新逻辑。\n│   ├── medusa_llama_pp.py\n│   │   └── Pipeline-parallel Medusa LLaMA 模型实现。\n│   ├── kv_cache.py\n│   │   └── KV cache 初始化、快照、加载、导出和上下文拼接。\n│   ├── outline_decoding_controller.py\n│   │   └── 管理 point 请求队列、输入 token、输出文本和完成状态。\n│   └── utils.py\n│       └── 解码相关辅助函数。\n├── tools\u002F\n│   ├── model_partition.py\n│   │   └── 将完整基础模型权重切分为每个 rank 的 `stage.bin`。\n│   ├── sot.py\n│   │   └── 结构化 outline parser 和 point prompt 构造。\n│   └── utils.py\n│       └── 分布式初始化、模型类型判断、权重加载和保存工具。\n├── temp_\u003Cmodel_type>_world_\u003Cworld>_rank_*\u002F\n  └── stage.bin\n      └── 每个 rank 的本地层段权重。\n\n```\n","LogicPipe 是一个面向边缘多设备协同 LLM 推理的开源软件项目，支持离线管线规划、分布式 stage 权重加载、依赖感知任务调度和上下文 KV cache 复用。其核心功能包括将模型切分为多个 stage 并在不同设备上并行执行，通过 DAG 调度器管理带依赖关系的任务，以及复用上下文以提高推理效率。此外，LogicPipe 还支持多种量化加载参数，如 `--load_in_4bit` 和 `--load_in_8bit`，适用于显存有限的环境。该项目适合需要在多 GPU 或多设备上进行 LLM pipeline parallel 推理实验的场景，尤其适用于研究依赖型推理任务的调度与并行解码。",2,"2026-06-01 03:57:25","CREATED_QUERY"]