
Hunyuan3D-2 如何启动 api_server.py 并配置 --enable_tex、--model_path 与并发限制【免费下载链接】Hunyuan3D-2High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models.项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2在本地把 Hunyuan3D-2 部署成可对外提供请求的 API 服务时核心入口就是仓库根目录的 api_server.py启动后可以通过 POST 请求把图像转成 3D 网格可选再贴纹理并支持异步提交。本文说明如何安装依赖、用--model_path指定模型仓库、用--enable_tex启用纹理管线、用--limit-model-concurrency设置并发参数并给出文档中提供的验证请求。准备条件安装依赖与显存要求按 README.md 的 Install Requirements 一节先从 PyTorch 官网安装 PyTorch再执行pip install -r requirements.txt pip install -e . # for texture cd hy3dgen/texgen/custom_rasterizer python3 setup.py install cd ../../.. cd hy3dgen/texgen/differentiable_renderer python3 setup.py install其中两个setup.py installcustom_rasterizer与differentiable_renderer是纹理生成所需的渲染组件。README 说明形状生成需要 6 GB 显存形状加纹理生成合计需要 16 GB 显存项目支持 Macos、Windows、Linux。--enable_tex会额外加载纹理管线因此启用它时应按 16 GB 显存这条要求准备环境。启动参数总览api_server.py 中argparse定义的参数及默认值如下参数默认值作用--host0.0.0.0服务监听地址--port8081服务端口--model_pathtencent/Hunyuan3D-2mini形状生成模型仓库传给Hunyuan3DDiTFlowMatchingPipeline.from_pretrained--tex_model_pathtencent/Hunyuan3D-2纹理生成模型仓库仅在使用--enable_tex时加载Hunyuan3DPaintPipeline--devicecuda模型所在设备--limit-model-concurrency5用于初始化全局信号量model_semaphore--enable_tex未开启store_true 开关开启后加载纹理管线关于--limit-model-concurrency启动代码用它创建model_semaphore asyncio.Semaphore(args.limit_model_concurrency)get_queue_length()基于该信号量计算当前队列长度args.limit_model_concurrency - model_semaphore._value 等待者数量并由get_status()上报。文档中没有对该参数作更多说明这里只按代码实际用途描述。一个需要注意的边界ModelWorker的subfolder参数默认固定为hunyuan3d-dit-v2-mini-turbo而启动入口没有提供命令行--subfolder。因此--model_path指向的仓库中必须存在这个子目录否则from_pretrained(model_path, subfolder...)会失败。默认的tencent/Hunyuan3D-2mini与之匹配README 的 Models Zoo 中该仓库包含hunyuan3d-dit-v2-mini-turbo子目录。最短启动路径docs/source/started/api.md 和 README.md 给出的启动命令python api_server.py --host 0.0.0.0 --port 8080这条命令使用全部默认值--model_path tencent/Hunyuan3D-2mini、不带纹理管线。注意文档命令显式传了--port 8080而脚本--port的默认值是8081——如果省略--port服务会监听 8081后续请求地址要随之调整。配置模型路径、纹理与并发参数需要启用纹理生成、指定模型仓库并调整并发参数时按 api_server.py 的参数组装命令端口沿用文档中的 8080python api_server.py --host 0.0.0.0 --port 8080 \ --model_path tencent/Hunyuan3D-2mini \ --tex_model_path tencent/Hunyuan3D-2 \ --device cuda \ --enable_tex \ --limit-model-concurrency 5各参数的用途判断--enable_tex开启后启动阶段执行Hunyuan3DPaintPipeline.from_pretrained(tex_model_path)加载纹理模型不带该参数时请求里即使传了纹理相关字段服务端也没有pipeline_tex可用。--model_path形状模型的仓库标识。保持默认值即可使用hunyuan3d-dit-v2-mini-turbo子目录如果要换仓库先确认该仓库包含同名子目录见上一节的 subfolder 边界说明。--limit-model-concurrency设定信号量初始值用于队列长度统计。文档未解释具体调优建议可按需调整数值。服务启动后生成结果和日志都写在gradio_cache/目录下生成的网格保存为gradio_cache/{uid}.{type}默认type为glb日志文件为gradio_cache/controller.log日志格式为%(asctime)s | %(levelname)s | %(name)s | %(message)s生成耗时会以--- {n} seconds ---的形式记录。验证服务发送一次图像转 3D 请求文档给出的验证方式是对/generate接口发一个图像到 3D 的 POST 请求无纹理img_b64_str$(base64 -i assets/demo.png) curl -X POST http://localhost:8080/generate \ -H Content-Type: application/json \ -d { image: $img_b64_str, } \ -o test2.glb成功时接口返回FileResponsecurl 把 GLB 文件写到test2.glb生成的文件同时保存在服务端gradio_cache/中可以用它核对任务是否落盘。请求体中 api_server.py 代码支持的字段包括imagebase64 字符串、seed默认 1234、octree_resolution默认 128、num_inference_steps默认 5、guidance_scale默认 5.0、type默认glb决定输出文件后缀以及texture布尔值。启用纹理生成时服务端会先对网格做FloaterRemover、DegenerateFaceRemover、FaceReducermax_facenum默认取face_count字段缺省 40000处理再交给pipeline_tex。启动时带了--enable_tex后可按代码实现发送img_b64_str$(base64 -i assets/demo.png) curl -X POST http://localhost:8080/generate \ -H Content-Type: application/json \ -d { image: $img_b64_str, texture: true } \ -o test2.glb失败时接口返回 HTTP 404 和 JSON{text: NETWORK ERROR DUE TO HIGH TRAFFIC. PLEASE REGENERATE OR REFRESH THIS PAGE., error_code: 1}。代码中捕获的异常包括ValueError例如请求既没有image也没有text、torch.cuda.CudaError和未知异常堆栈会打印到日志可结合gradio_cache/controller.log排查。可选路径异步提交 /send 与轮询 /status/{uid}api_server.py 还实现了异步流程POST /send立即返回{uid: ...}并在后台线程中生成GET /status/{uid}轮询进度。文档没有给出对应示例命令以下用法按代码实现整理img_b64_str$(base64 -i assets/demo.png) uid$(curl -s -X POST http://localhost:8080/send \ -H Content-Type: application/json \ -d { image: $img_b64_str, } | python3 -c import sys,json;print(json.load(sys.stdin)[uid])) curl -s http://localhost:8080/status/$uid/status/{uid}检查gradio_cache/{uid}.glb是否存在不存在返回{status: processing}存在则返回{status: completed, model_base64: ...}其中 base64 即 GLB 文件内容。适合不想让 HTTP 连接一直挂着的批量调用场景。限制与边界端口默认值不一致脚本--port默认 8081文档命令显式使用--port 8080。以实际启动命令为准请求 URL 中的端口要对应。subfolder 不可通过命令行指定subfolder在代码中固定为hunyuan3d-dit-v2-mini-turbo更换--model_path仓库前确认其包含该子目录。文本输入路径当前不可用ModelWorker.generate中text分支依赖self.pipeline_t2i而该管线HunyuanDiTPipeline的初始化代码在 api_server.py 中被注释掉因此实际请求应提供image字段只提供text会抛出ValueError并返回上文的 404 JSON。纹理请求依赖启动开关未带--enable_tex启动时请求中传texture: true无法完成纹理生成因为纹理管线没有被加载。启动并验证通过后README 提到的 blender_addon.py 也依赖本地 API 服务可以在 Blender 中直接调用同一接口作为后续使用方向参考。【免费下载链接】Hunyuan3D-2High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models.项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考