---
title: Llama-3-EDDY-Qwen3-Embedding-8B
canonical_url: "https://www.modelscope.cn/models/CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B"
md_url: "https://www.modelscope.cn/models/CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B.md"
repository: CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B
last_updated: 2026-10-29
license: apache-2.0
pipeline_tag: feature-extraction
tasks:
  - feature-extraction
base_model:
  - Qwen/Qwen3-Embedding-8B
base_model_relation: adapter
parameters: 16.8M
tensor_type:
  - F32
library_name:
  - pytorch
  - safetensors
language:
  - en
downloads: 4
stars: 0
tags:
  - text-to-motion
  - embeddings
  - adapter
  - ardy
  - qwen3-embedding
---

# Llama-3-EDDY-Qwen3-Embedding-8B

> Llama-3-EDDY-Qwen3-Embedding-8B - CyrilTsui 在 ModelScope 开源的模型。Linear embedding adapter from Qwen3-Embedding-8B to the LLM2Vec vectors used by ARDY

CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B 是 ModelScope 魔搭社区上的 16.8M 参数feature-extraction模型，采用 apache-2.0 许可，基于 Qwen/Qwen3-Embedding-8B 构建。

- **Repository**: CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B
- **License**: apache-2.0
- **Tasks**: feature-extraction
- **Parameters**: 16.8M
- **Base model**: Qwen/Qwen3-Embedding-8B
- **Tags**: text-to-motion, embeddings, adapter, ardy, qwen3-embedding
- **Downloads**: 4
- **Stars**: 0
- **Last updated**: 2026-10-29

Source: https://www.modelscope.cn/models/CyrilTsui/Llama-3-EDDY-Qwen3-Embedding-8B

---

# Llama-3-EDDY-Qwen3-Embedding-8B

[![GitHub](https://img.shields.io/badge/GitHub-Code-181717?logo=github&logoColor=white)](https://github.com/Xyri1/EDDY)
[![Hugging Face](https://img.shields.io/badge/Hugging_Face-Model-FFD21E?logo=huggingface&logoColor=black)](https://huggingface.co/GhoXtie/Llama-3-EDDY-Qwen3-Embedding-8B)

Llama-3-EDDY-Qwen3-Embedding-8B is a linear embedding adapter for NVIDIA's [ARDY](https://github.com/nv-tlabs/ardy) text-to-motion model. It maps 4096-dimensional [Qwen3-Embedding-8B](https://huggingface.co/Qwen/Qwen3-Embedding-8B) embeddings to the LLM2Vec vectors ARDY uses for text conditioning.

The adapter replaces ARDY's LLM2Vec encoder at inference time. Qwen embeddings can be computed locally or through an API, allowing motion generation without keeping the 8B text encoder on the local GPU.

**Built with Meta Llama 3.** Developed by Cyril Tsui as part of [EDDY](https://github.com/Xyri1/EDDY). This is an independent project, not made by or endorsed by NVIDIA.

## Model details

| Property | Value |
| --- | --- |
| Model type | Linear embedding adapter |
| Parameters | 16.8 million trainable parameters |
| File | `eddy_qwen3-embedding-8b_4096.safetensors` (about 67 MB) |
| Input model | Qwen/Qwen3-Embedding-8B |
| Input format | 4096-dimensional embeddings, no instruction prefix |
| Target encoder | McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised |
| Supported motion model | nvidia/ARDY-SOMA-RP-30FPS-Horizon60 |
| Training method | Ridge regression, λ = 0.01 |
| Training language | English |

Qwen and LLM2Vec weights are not included. This is a separate mapping between their embedding spaces, loaded with EDDY's `eddy_encoder.py`.

## Usage

Install the [EDDY inference code](https://github.com/Xyri1/EDDY#quick-start). To map an existing batch of Qwen3-Embedding-8B vectors:

```python
import torch
from huggingface_hub import hf_hub_download
from eddy_encoder import load_adapter

path = hf_hub_download(
    "GhoXtie/Llama-3-EDDY-Qwen3-Embedding-8B",
    "eddy_qwen3-embedding-8b_4096.safetensors",
)
adapter, metadata = load_adapter(path, device="cpu")

@torch.no_grad()
def map_embeddings(qwen_vectors):
    # Input and output shapes: [B, 4096].
    return adapter(torch.as_tensor(qwen_vectors, dtype=torch.float32))
```

The adapter normalizes its input and restores the target vector scale. Use `EddyTextEncoder` when integrating with ARDY: it returns `[B, 1, 4096]` vectors and lengths, caches embeddings, and returns exact zeros for empty prompts without calling the embedding provider.

See the [ARDY integration example](https://github.com/Xyri1/EDDY#quick-start) for `.env` configuration of the embedding base URL, model ID, and API key. A [Gradio demo](https://github.com/Xyri1/EDDY/tree/main/demo) is also available.

## Intended use and limitations

The adapter is intended for English motion descriptions used with ARDY-SOMA-RP-30FPS-Horizon60. Evaluation uses third-person descriptions such as “A person walks forward and waves.”

- **Input compatibility:** use Qwen3-Embedding-8B with 4096 dimensions and no instruction prefix. Training inputs used bf16 inference and last-token pooling. Vector size is checked by `EddyTextEncoder`; model identity is the caller's responsibility.
- **Motion quality:** multi-event prompts show the largest benchmark loss. Finger-level signs have some of the largest vector errors.
- **Provider differences:** both local Qwen and OpenRouter embeddings were tested. OpenRouter passed the validation motion check, but scored below LLM2Vec in all five seeds. Other providers have not been evaluated.
- **Scope:** other ARDY checkpoints, languages, and embedding models have not been evaluated. The effect of imperatives, first- or second-person descriptions, single words, negation, and durations in the prompt has not been measured.
- **Evaluation coverage:** the released adapter was evaluated on benchmark timeline multi. The overview and timeline-single scores below belong to an earlier adapter.

## Training

The adapter is fit on **111,922 paired embeddings**. Each pair contains a Qwen3-Embedding-8B vector and the bf16 LLM2Vec vector for the same text.

| Training source | Pairs |
| --- | --- |
| HumanML3D captions and stream-style prompts | 44,512 |
| SEED-Timeline-Annotations labels | 47,410 |
| Template joins of consecutive SEED event labels | 20,000 |

Texts are split by motion or content group. All captions from a motion stay in the same split. Benchmark test texts are excluded from training. SEED validation determines model selection.

The model applies L2 normalization to each input, a learned linear map, and fixed per-dimension target statistics:

```text
x_normalized = x / ||x||₂
y = (W x_normalized + b) ⊙ σ + μ
```

The target mean μ and standard deviation σ are computed from the training split only. The released model has no MLP branch. The safetensors metadata records the input model, dimensions, provider and dtype of the training vectors, and the target encoder.

Training texts and embeddings are not distributed with this adapter. Data sources, split details, and training settings are documented in the [technical report](https://github.com/Xyri1/EDDY/blob/main/docs/report.md#3-data).

## Evaluation

Motion is generated with ARDY-SOMA-RP-30FPS-Horizon60 and scored with TMR-SOMA-RP-v1. The reference uses bf16 LLM2Vec with the same generation seeds. R@3 is reported below; higher is better. Validation results report variation across five seeds.

| Evaluation | LLM2Vec | EDDY |
| --- | --- | --- |
| 500 SEED validation prompts, local Qwen | 79.1 ± 2.1 | 78.1 ± 1.0 |
| Same prompts, Qwen from OpenRouter | 79.1 ± 2.1 | 77.2 ± 1.6 |
| 500 joined multi-event validation prompts | 87.2 ± 1.4 | 84.9 ± 0.8 |
| Kimodo benchmark, timeline single (earlier adapter) | 64.78 | 64.34 |
| Kimodo benchmark, overview (earlier adapter) | 75.90 | 73.94 |
| Kimodo benchmark, timeline multi (released adapter) | 77.19 | 73.38 |

On SEED validation, the paired R@3 difference is −1.0 ± 2.2 for local Qwen and −1.9 ± 1.1 for OpenRouter. The largest benchmark gap is −3.8 points on timeline multi.

The benchmark was first run with the earlier adapter. Timeline multi was evaluated again after the released adapter was selected; that second result was not used for selection. The held-out test-prompt split was used once.

An end-to-end evaluation on 45 prompts scored 94.2 ± 3.0 with EDDY and 95.1 ± 1.7 with LLM2Vec. With the embedding model off the GPU, ARDY and EDDY peaked at 0.96 GiB of PyTorch-allocated VRAM at batch size one. This excludes CUDA overhead and reserved memory.

See the [evaluation report](https://github.com/Xyri1/EDDY/blob/main/docs/report.md#5-results) for R@1, FID, vector checks, and the full protocol.

## License

**Apache License 2.0** ([LICENSE](LICENSE)) for this adapter and its documentation. Attributions are in [NOTICE](NOTICE); keep it when you redistribute EDDY, as the Apache License requires. The adapter contains no Llama 3 weights, and on the author's reading the Meta Llama 3 Community License asks only for the "Llama 3" name prefix and the attribution above. If its terms are found to apply to the adapter, they apply in addition to the Apache License. The Meta Llama 3 Community License copy in this repo ([LICENSE-LLAMA3.txt](LICENSE-LLAMA3.txt)) covers the Llama 3 materials.

## Third-party licenses and attribution

This is the author's reading of the licenses, not legal advice. Checked at the source on 2026-10-29.

**Built with Meta Llama 3.** EDDY's training targets were produced by LLM2Vec, which runs Meta Llama 3 weights. The model name therefore starts with "Llama 3" (Meta Llama 3 Community License, section 1.b.i). The agreement and the use policy are in this repo: [LICENSE-LLAMA3.txt](LICENSE-LLAMA3.txt), [USE_POLICY-LLAMA3.md](USE_POLICY-LLAMA3.md). The copies are from the `main` branch of github.com/meta-llama/llama3.

Training data includes Motion Data by Bones Studio. EDDY was not trained on Bones motion data. The motions were used only to run the benchmark evaluation. The training texts come from NVIDIA's SEED-Timeline-Annotations (CC BY 4.0).

| Work | Use in EDDY | License |
| --- | --- | --- |
| Meta Llama 3 (inside LLM2Vec) | Runs inside the teacher that made the training targets | Meta Llama 3 Community License (copy in [LICENSE-LLAMA3.txt](LICENSE-LLAMA3.txt)) |
| [LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised](https://huggingface.co/McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised) and [-mntp](https://huggingface.co/McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp) | Teacher: EDDY was trained on its output vectors | MIT (Hugging Face model card). It covers McGill's adapter weights. The Llama 3 base stays under Meta's license. |
| [Qwen3-Embedding-8B](https://huggingface.co/Qwen/Qwen3-Embedding-8B) | Input model; training vectors. Not redistributed. | Apache-2.0 (Hugging Face model card) |
| [ARDY-SOMA-RP-30FPS-Horizon60](https://huggingface.co/nvidia/ARDY-SOMA-RP-30FPS-Horizon60) | Run-time model and evaluation. The demo downloads it at run time. Not redistributed. | NVIDIA Open Model Agreement. NVIDIA claims no ownership of outputs. |
| [ARDY](https://github.com/nv-tlabs/ardy) code | Imported by the demo; not vendored | Apache-2.0 |
| [TMR-SOMA-RP-v1](https://huggingface.co/nvidia/TMR-SOMA-RP-v1) | Motion scoring in evaluation only. Not redistributed. | NVIDIA Open Model License. Its use is subject to NVIDIA's Trustworthy AI terms. |
| [SEED-Timeline-Annotations](https://huggingface.co/datasets/nvidia/SEED-Timeline-Annotations) | Training and validation texts. EDDY's joined texts are modified (concatenated) versions of these labels. | CC BY 4.0 |
| [Kimodo Motion Generation Benchmark](https://huggingface.co/datasets/nvidia/Kimodo-Motion-Gen-Benchmark) | Benchmark protocol and results | CC BY 4.0 |
| [HumanML3D](https://github.com/EricGuo5513/HumanML3D) | Only its captions were used; no AMASS motion data | MIT |
| [BONES-SEED](https://huggingface.co/datasets/bones-studio/seed) motion data | Only to run the Kimodo benchmark evaluation; never for training; not redistributed | [Bones SEED license](https://bones.studio/info/seed-license) (gated). The project is non-profit, under the license's non-commercial research terms. The license counts statistical findings and publications as "Results". |

## Citation

```bibtex
@software{eddy2026,
  title  = {Llama-3-EDDY-Qwen3-Embedding-8B: Embedding aDapter for ARDY},
  author = {Tsui, Cyril},
  year   = {2026},
  url    = {https://github.com/Xyri1/EDDY}
}
```

Please also cite ARDY (Zhao et al., ACM TOG 45(4), 2026, doi 10.1145/3811284).
