Gibt es einen bestimmten Grund, warum diese Docker-Befehle nicht im Detached-Modus ausgeführt werden (es fehlt -d)?
Wenn Sie meinen „Sollte ich diese nicht mit -d starten?“ lautet die Antwort wahrscheinlich ja.
Wenn Sie wirklich meinen „Warum hat der OP mir nicht gesagt, diese Befehle mit -d zu starten?“, denke ich, dass sie als Beispiele dafür gedacht sind, wie man sie starten und überhaupt zum Laufen bringen kann. In der Praxis werden Sie einige \u003canderes Zeug\u003e tun wollen, um sie auf eine Weise zu starten, die sie in der Produktion nützlich macht.
Das ist genau meine Frage und Sie haben den Nagel auf den Kopf getroffen. Es ist eine Weile her, seit ich meine Docker-Instanzen konfiguriert habe, aber das kommt jetzt wieder. Wenn Sie „anderes Zeug“ sagen, das ich tun sollte, um sie für die Produktion nützlich zu machen, gibt es noch etwas, das mir „TU DAS!“ schreien sollte (abgesehen von der offensichtlichen Änderung der Portnummer von denselben 6666 in jeder der Docker-Instanzen)?
OK. Sind diese durch Pipe getrennten API-Schlüssel völlig beliebig, wie der Service-Host, und geben wir einfach die alphanumerischen Schlüssel an, die wir vom Client akzeptieren möchten?
Wie ist die Änderung des Ports weniger “offensichtlich” als die Ausführung im Hintergrund?
Das ist der Punkt. Ohne intimes Wissen darüber, was Sie für offensichtlich halten, ist es unmöglich, die Frage zu beantworten. Meistens, wenn Sie sich nicht ziemlich sicher sind, dass Sie wissen, wie Sie die Dinge nützlich machen können, dann brauchen Sie wahrscheinlich Hilfe, die Sie hier nicht bekommen können. ![]()
Da ich in der Vergangenheit Dutzende von Docker-Containern ausgeführt habe. Ich habe Docker in den letzten zwei Jahren nicht mehr angefasst und bin tief eingetaucht. Es war nicht sofort offensichtlich, da ich es eine Weile nicht mehr angefasst hatte, aber dieses grundlegende Wissen für die Verwendung von Docker kam nach der Diskussion wieder zurück.
Das ist der Punkt. Ohne intimes Wissen darüber zu haben, was Sie für offensichtlich halten, ist es unmöglich, die Frage zu beantworten. Meistens, wenn Sie sich nicht ziemlich sicher sind, wie Sie die Dinge nützlich machen können, dann brauchen Sie wahrscheinlich Hilfe, die Sie hier nicht bekommen können.
Das ist aber der Haken. Manchmal ist das Offensichtliche nicht offensichtlich, selbst für diejenigen mit Erfahrung in verschiedenen Docker-Systemen wie mir. Man könnte das, was Sie gesagt haben, so interpretieren, dass man die Antwort auf die Frage kennen sollte, bevor man sie stellt. Verstehen Sie, dass einige von uns Gemeinschaften als ehrenamtlichen Dienst betreiben und nicht 24/7 damit verbringen, die intimsten Details von Discourse bis hin zu den Postgres-Datenstrukturen usw. zu lernen. Ich habe das Gefühl, Sie haben mich abgewiesen, und das wurde in einem Community-Forum, in dem sich alle frei und glücklich gegenseitig helfen sollten, nicht geschätzt.
Um auf den Punkt zu kommen: Ich habe einiges gegoogelt, um herauszufinden, wie API_KEYS verwendet werden soll, und bin nicht fündig geworden. Ich verstehe, dass ich vielleicht das Offensichtliche übersehe und das für einen Discourse-Profi wie Sie mit umfassenden Kenntnissen der Plattform bis auf die unterste Ebene hinunter äußerst frustrierend sein mag, aber ich versuche hier eine Community-Diskussion zu führen, damit auch andere, die nicht unbedingt auf Ihrem Niveau sind, davon profitieren können. Schließlich geht es darum, dass auch andere als die Entwickler von Discourse diese Software nutzen können.
Ich fühle mit dir. Auf einen Dienst zu stoßen, den ich laufen habe und wenig Ahnung habe, wie ich ihn gestartet habe, passiert öfter, als mir lieb ist.
Richtig. Selbst Anweisungen, die wir für uns selbst schreiben, ergeben keinen Sinn, wenn wir sie brauchen.
Entschuldigung. Ich wollte nicht unhöflich oder gemein sein, und es sieht so aus, als wäre ich es gewesen. Mein Punkt war nur, dass es schon schwierig genug ist, Leute zu unterstützen, die die Standardinstallation ausführen. Daher ist es schwierig herauszufinden, welche Fähigkeiten du hast, wie du es starten willst, ob es im offenen Internet laufen wird und ob du weißt, wie du es mit https schützen kannst oder willst (wahrscheinlich schon, wenn du denkst, dass du es mit API-Schlüsseln schützt).
Ja. Wenn du das irgendwo platzierst, wo jemand anderes damit Kontakt aufnehmen kann, denke ich, dass du die Variable API_KEYS definieren und eine Möglichkeit finden willst, etwas Zufälliges als Schlüssel zu generieren. Und dann würdest du denselben Schlüssel in den Einstellungen des Plugins eingeben. Das habe ich getan. Ich habe nicht überprüft, ob die Verwendung des falschen Schlüssels es kaputt machen würde, was ich ehrlich gesagt hätte tun sollen. Vielleicht mache ich das bei der Instanz, zu der ich das Plugin gerade hinzufüge.
Aber es wäre vielleicht besser, wenn der OP die -d Option einschließt und die Umgebungsvariable API_KEYS setzt.
Der API_KEYS-Umgebungsregler ist eine optionale Einstellung, die Sie verwenden können, wenn Sie den Dienst aus irgendeinem Grund auf Clients beschränken möchten, die einen der konfigurierten API_KEYS in ihrem Header angeben.
Etwas, das Sie nicht wirklich benötigen, wenn Sie ihn intern für eine einzelne Instanz ausführen, aber das nützlich sein kann, wenn Sie ihn über das Internet oder in einer gemeinsam genutzten Umgebung ausführen.
Danke @Falco und @pfaffman für eure Hilfe und sorry, falls ich hier vom Thema abgekommen bin! Eure Hilfe war sehr geschätzt! ![]()
Können alle diese Dienste von mehreren Discourse-Installationen genutzt werden, oder sollten diese pro Website ausgeführt werden?
Sie sind alle sicher für die gemeinsame Nutzung zwischen Instanzen.
Ist es immer noch möglich, die Zusammenfassung mit OpenAI API-Schlüsseln zu verwenden?
Ja, füllen Sie die Schlüssel aus und wählen Sie ein OpenAI-Modell in den Zusammenfassungseinstellungen.
Es gibt ein kleines Problem, wenn das Thema eine andere Sprache als Englisch oder eine kleinere verwendet – es verwendet einmal die richtige Sprache und plötzlich beginnt es, Englisch zu verwenden. Beide Arten der Sprachänderung scheinen völlig zufällig zu geschehen.
Ich teste den Summarization-Endpunkt:
docker run -d --rm --gpus all --shm-size 1g -p 80:80 -v /mnt:/data -e GPTQ_BITS=4 -e GPTQ_GROUPSIZE=32 -e REVISION=gptq-4bit-32g-actorder_True ghcr.io/huggingface/text-generation-inference:latest --model-id TheBloke/Upstage-Llama-2-70B-instruct-v2-GPTQ --max-batch-prefill-tokens=12000 --max-total-tokens=12000 --max-input-length=10000 --quantize=gptq --sharded=true --num-shard=$(lspci | grep NVIDIA | wc -l | tr -d '\\n') --rope-factor=2
Wenn ich ihn jedoch ausführe, erhalte ich die folgende Fehlermeldung. Diese Maschine verfügt über (2) Tesla T4s und kein anderer Prozess greift auf die GPUs zu. Siehe Nutzung unten.
user@gpu2-hc1node:~$ sudo docker logs -f 68e27eb51ee1
2023-12-14T21:30:12.861320Z INFO text_generation_launcher: Args { model_id: "TheBloke/Upstage-Llama-2-70B-instruct-v2-GPTQ", revision: Some("gptq-4bit-32g-actorder_True"), validation_workers: 2, sharded: Some(true), num_shard: Some(2), quantize: Some(Gptq), speculate: None, dtype: None, trust_remote_code: false, max_concurrent_requests: 128, max_best_of: 2, max_stop_sequences: 4, max_top_n_tokens: 5, max_input_length: 10000, max_total_tokens: 12000, waiting_served_ratio: 1.2, max_batch_prefill_tokens: 12000, max_batch_total_tokens: None, max_waiting_tokens: 20, hostname: "68e27eb51ee1", port: 80, shard_uds_path: "/tmp/text-generation-server", master_addr: "localhost", master_port: 29500, huggingface_hub_cache: Some("/data"), weights_cache_override: None, disable_custom_kernels: false, cuda_memory_fraction: 1.0, rope_scaling: None, rope_factor: Some(2.0), json_output: false, otlp_endpoint: None, cors_allow_origin: [], watermark_gamma: None, watermark_delta: None, ngrok: false, ngrok_authtoken: None, ngrok_edge: None, env: false }
2023-12-14T21:30:12.861350Z INFO text_generation_launcher: Sharding model on 2 processes
2023-12-14T21:30:12.861441Z INFO download: text_generation_launcher: Starting download process.
2023-12-14T21:30:19.986231Z INFO text_generation_launcher: Files are already present on the host. Skipping download.
2023-12-14T21:30:20.771527Z INFO download: text_generation_launcher: Successfully downloaded weights.
2023-12-14T21:30:20.771941Z INFO shard-manager: text_generation_launcher: Starting shard rank=1
2023-12-14T21:30:20.771967Z INFO shard-manager: text_generation_launcher: Starting shard rank=0
2023-12-14T21:30:27.769624Z WARN text_generation_launcher: Disabling exllama v2 and using v1 instead because there are issues when sharding
2023-12-14T21:30:27.997163Z WARN text_generation_launcher: Disabling exllama v2 and using v1 instead because there are issues when sharding
2023-12-14T21:30:28.046134Z WARN text_generation_launcher: Unable to use Flash Attention V2: GPU with CUDA capability 7 5 is not supported for Flash Attention V2
2023-12-14T21:30:28.071687Z WARN text_generation_launcher: Could not import Mistral model: Mistral model requires flash attn v2
2023-12-14T21:30:28.072298Z WARN text_generation_launcher: Could not import Mixtral model: Mistral model requires flash attn v2
2023-12-14T21:30:28.241375Z WARN text_generation_launcher: Unable to use Flash Attention V2: GPU with CUDA capability 7 5 is not supported for Flash Attention V2
2023-12-14T21:30:28.262756Z WARN text_generation_launcher: Could not import Mistral model: Mistral model requires flash attn v2
2023-12-14T21:30:28.263363Z WARN text_generation_launcher: Could not import Mixtral model: Mistral model requires flash attn v2
2023-12-14T21:30:30.786133Z INFO shard-manager: text_generation_launcher: Waiting for shard to be ready... rank=1
2023-12-14T21:30:30.786133Z INFO shard-manager: text_generation_launcher: Waiting for shard to be ready... rank=0
2023-12-14T21:30:40.348755Z ERROR text_generation_launcher: Error when initializing model
Traceback (most recent call last):
File "/opt/conda/lib/python3.10/site-packages/text_generation_server/utils/weights.py", line 191, in get_multi_weights_col
qweight = torch.cat(
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 112.00 MiB. GPU 0 has a total capacty of 14.76 GiB of which 74.75 MiB is free. Process 19973 has 14.68 GiB memory in use. Of the allocated memory 13.73 GiB is allocated by PyTorch, and 74.36 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
nvidia-smi nach dem Absturz des Modells.
Thu Dec 14 15:39:55 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.223.02 Driver Version: 470.223.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------|
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:86:00.0 Off | 0 |
| N/A 54C P0 28W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla T4 Off | 00000000:AF:00.0 Off | 0 |
| N/A 55C P0 28W / 70W | 0MiB / 15109MiB | 5% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Wenn ich das Modell starte, sehe ich, wie die GPU-Auslastung auf beiden GPUs auf etwa 100 % ansteigt und es dann abstürzt.
Zwei T4 sind viel zu wenig für dieses Modell. Sie können etwas wie ein kompatibles 7B-Modell für Prompts ausprobieren.
Ich konnte den folgenden Modus auf einer T4 ausführen
sudo docker run --gpus all --shm-size 1g -p 80:80 -v /home/deeznnutz/discourse/data:/data ghcr.io/huggingface/text-generation-inference:1.3 --model-id tiiuae/falcon-7b-instruct --max-batch-prefill-tokens 2048
Ich kann es lokal testen und es funktioniert:
curl https://Public_URL/generate -X POST -d '{\"inputs\":\"What is Deep Learning?\",\"parameters\":{\"max_new_tokens\":20}}' -H 'Content-Type: application/json'
{\"generated_text\":\"\\nDeep learning is a branch of machine learning that uses artificial neural networks to learn and make decisions.\"}
Wenn ich versuche, es in Discourse mit diesen Einstellungen auszuführen
ai summarization discourse service api endpoint: https://URL/generate/
ai summarization discourse service api key: random numbers
summarization strategy: Discourse AI's long-t5-tglobal....-book-summary
erhalte ich die folgende Fehlermeldung.
Message (6 copies reported)
Job exception: Net::HTTPBadResponse
Backtrace
/var/www/discourse/plugins/discourse-ai/lib/inference/discourse_classifier.rb:13:in `perform!'
/var/www/discourse/plugins/discourse-ai/lib/summarization/strategies/truncate_content.rb:46:in `completion'
/var/www/discourse/plugins/discourse-ai/lib/summarization/strategies/truncate_content.rb:42:in `summarize_with_truncation'
/var/www/discourse/plugins/discourse-ai/lib/summarization/strategies/truncate_content.rb:23:in `summarize'
/var/www/discourse/app/services/topic_summarization.rb:38:in `summarize'
/var/www/discourse/app/jobs/regular/stream_topic_summary.rb:25:in `execute'
/var/www/discourse/app/jobs/base.rb:292:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:279:in `block in perform'
/var/www/discourse/app/jobs/base.rb:275:in `each'
Sie müssen die URL dieses Dienstes unter ai_hugging_face_api_url festlegen.
Es scheint, dass die verfügbaren Zusammenfassungsstrategien das von mir ausgeführte Modell nicht unterstützen.
ghcr.io/huggingface/text-generation-inference:1.3 --model-id tiiuae/falcon-7b-instruct
Ich frage mich nur, wenn Sie den Toxizitätsklassifizierungsdienst installieren und ausführen, wie Sie ihn deaktivieren oder ordnungsgemäß deinstallieren? Danke

