В этом и есть суть at-will employment, что контракта нету.
Конечно, можно назвать контрактом, что в оффере мне написали какая у меня будет зарплата - значит вот он контракт. Можно. Вот только никто это здесь контрактом не называет.
Контракт - это когда работадатель берёт на себя обязательства по тому, что он не уволит, если работник делает одно, другое, третье.. это есть в профсоюзах, в гос.учреждениях.
У программистов в США (не контракторов) нет контракта в котором прописано сколько часов они должны работать.
Поэтому когда в прошлом месяце у нас упал важный сервис, то наш директор не парился насчёт часов, а написал всей нашей команде вечером: все присоединяемся на звонок сюда и чиним.
Но я не в стартапе, поэтому на следующей неделе, тот же директор написал нашей команде в пятницу: сегодня работаем до обеда, всем хорошим выходных.
А в стартапе - там каждый вечер надо чего то допиливать.
Когда Маск купил Твиттер, то он написал: все будут пахать, кто не хочет - свободны. Это не означает, что он менял контракт. Просто сказал и всё.
Если менеджер или директор посчитает, что кто-то не гребёт достаточно старательно, то никто никому ничего не доказывает: просто тебя зовут в кабинет и сообщают, что ты здесь больше не работаешь.
Потому что когда смотришь на зарплаты программистов в США и сравниваешь с зарплатами программистов в Европе, то вообще непонятно, как в Европе вообще хоть кто-то остался? А если ещё на налоги посмотреть - то понятно, что у Европы нет никаких шансов.
А одна из причин почему зарплаты программистов в США в разы больше - это потому что работадатели здесь смелее нанимают людей. В Европе наймёшь человека - и замучаешься сокращать / увольнять с их законами. Лучше уж нанять подороже человека в США, и если что будет не так - то в любой момент можно будет проводить без лишней головной мороки.
Я когда приехал в США, то работал на стройке. Там если хоть немного алкоголя увидят / заподозрят - сразу увольняют.
Когда стал программистом, пришёл работать в один офис в Сиэттле, там на ланч мне стали показывать буфет - вот тут вино, пиво, ... - ни в чём себе не отказывай. Кстати пьяных в офисе я не видел - всё в меру.
Читал, что Сан-Франциско в некоторых офисах народ "грибами" закидывается, чтобы работать более "творчески". В офисе, на работе.
У нас тут в США интересно сделано, что большинство "обычных" рабочих получают зарплату почасовую. Всё что больше 40 часов в неделю - оплата x1.5 за каждый час. В некоторых случаях это может подниматься до x2.
А вот работники, которые зарабатывают больше - директора, доктора, программисты - называются exempt employees (буквально - исключительные работники). Зарплата у них обычно - месячная. Почасовой ставки нет, что означает, что если они работают большее количество часов - то больше они НЕ получают. Правда, я тут постоянно вижу, как такие работники быстро поняли, что если работать меньшее количество часов, то и меньше получать тоже НЕ будешь, поэтому приходят на работу к обеду, ходят по своим делам в течении дня...
Вот например карточка RTX 4090 работает на скорости 1000 GB/s и не упирается в физические ограничения.
Проблема с технологиями последнего поколения всегда в том, что есть какие-то сценарии (edge cases), которые ещё не очень понятны.
Вот взял я 8 каналов памяти DDR5, но похоже для DELL планки нужно было брать 1Rx8, а не 2Rx4. Сейчас про это информации нигде нет, даже в официальном гайде у производителя материнской платы, а через пару лет это будет уже известно шире, и те, кто будут делать такую систему - получает не 190ГБ/c как я, а 250ГБ/c. А с другими материнками (или chipset?) 2Rx4 будут работать нормально.
Или вот взял я Xeon W5-3425, потому что везде пишут, что на процессоре инференция упирается в скорость памяти, а не в скорость процессора. Вот только нигде не пишут, что при некотором малом числе ядер - тем или иным образом скорость упрётся в это. И похоже оптимально иметь 24 ядра, - тогда наверное можно будет получить и около 300 GB/s на 8 каналов.
Вот первопроходцы и набивают шишки.
Кстати, вот ещё некоторые обнаруженных факторов, влияющих на инференцию на CPU, которые только-только начинают быть понятными:
современный софт для инференции не умеет работать с несколько процессорами - только с одним. Инференция на двух процессорах работает МЕДЛЕННЕЕ, чем на одном.
У AMD есть процессоры с большим количество ядер, поддержкой 12 каналов DDR5 памяти, - но оказывается, что там ядра разделены на группы CCD, и если этих групп мало, то работа с памятью никогда не будет на полной скорости. Для многих моделей процессоров 8-канальные Xeon будут быстрее 12-канальных AMD.
Я вот как раз этим и занялся. Запускал Deepseek V3, Qwen235 и тому подобное.
У меня стоит Nvidia 4090D 48GB, но большие модели не помещаются.
Сначала взял себе Dell Precision 7920, Intel Xeon Gold 5218:
6 каналов памяти
DDR4-2667
я поставил 6 планок по 64 GB (на Ebay каждая планка стоит около $70). Теоретически должно получиться 128GB/s. Intel mlc показывал, что у меня скорость - 121 GB/s. Stream показывал скорость 81 GB/s.
Опытным путём выяснил, что 120 GB/s - это медленно для больших моделей.
Взял Dell Precision T7960, Intel Xeon W5-3425:
8 каналов памяти
DDR5-4800
я поставил 8 планок по 64 GB (на Ebay каждая планка $260). Теоретически должно получиться 307 GB/s. Intel mlc показывает скорость до 190 GB/s. Маловато. Я стал разбираться: BIOS показывает, что у меня память работает в "Mixed mode", а как я думаю - должна в "Octa mode". Может быть проблема в том, что рэнкинг у меня 2Rx4, а я подозреваю, что с моим контроллеров памяти (Intel W790) похоже нужно 1Rx8 (такие на Ebay стоят $380 за планку и там написано что эти планки - для Dell). Получается надо выложить $3000 только за память, но я не уверен, что это решит вопрос: продолжаю разбираться - уже неделю переписываюсь в поддержкой Dell.
Ещё читал что процессоры поколения Intel Xeon W5-3425 способны "переваривать" около 20 GB/s на каждом ядре. У меня 12 ядер и получается, что даже если память разгонится на 307 GB/s, то процессор сможет держать только около 240 GB/s. Но пока вот получается около 190 GB/s. Так что наверное надо было брать процессор с 20+ ядрами. Но у процессоров с большим количество ядер - ниже тактовая частота, и я не уверен, что важнее.
То есть получается, что перейдя с Xeon 5218+DDR4 -> Xeon W5-3425+DDR5:
память ускорилась со 120 GB/s -> 190 GB/s
памяти стало больше: 384 GB -> 512 GB
я заплатил около $2500+ за апгрейд.
ещё на новом процессоре я получил AMX (Advanced Matrix Extensions), который значительно ускоряет обработку промптов (Prompt processing) при инференции и PCIe 5.0.
Для сравнения, у Nvidia RTX 4090D, скорость памяти: 1000 GB/s
Во первых, gasoline (бензин) это совершенно не natural gas (газ).
Во вторых тут у нас в США практически нет машин на газе (natural gas). Так что никому не может даже в голову прийти проводить какие-то исследования рынка таких автомобилей. Нет такого рынка.
Товарищ Вячеслав Голованов, который "Проповедую в храме науки".
Когда вы будете свободны от религиозных занятий, то советую познакомиться, что "gasoline" - это не "с газовым оборудованием" и не "газовые автомобили", а - бензиновые.
Получил скорость на 2 GPU: prompt eval time = 53671.03 ms / 1268 tokens ( 42.33 ms per token, 23.63 tokens per second) eval time = 389557.42 ms / 1731 tokens ( 225.05 ms per token, 4.44 tokens per second)
На одном RTX 4090D 48GB: prompt eval time = 58561.21 ms / 1273 tokens ( 46.00 ms per token, 21.74 tokens per second) eval time = 371584.74 ms / 1566 tokens ( 237.28 ms per token, 4.21 tokens per second)
Запустил эту же модель на ik_llama.cpp на одной RTX 4090D:
prompt eval time = 21474.45 ms / 1265 tokens ( 16.98 ms per token, 58.91 tokens per second)
generation eval time = 396856.15 ms / 1690 runs ( 234.83 ms per token, 4.26 tokens per second)
Вывод:
Для обычных моделей llama.cpp и ik_llama.cpp приблизительно одинаковы по скорости генерации токенов. По обработке промпта llama.cpp в 2.7 раза быстрее, - думаю что это из-за AMX.
ik_llama.cpp работает в 2-3 раза быстрее только с оптимизированными моделями (_R4):
PP: 164 t/s vs 58 t/s
TG: 8.5 t/s vs 4.2 t/s
Интересно, если в ik_llama.cpp завезут AMX, - она вообще уйдёт в отрыв по скорости обработки промпта?
В этом и есть суть at-will employment, что контракта нету.
Конечно, можно назвать контрактом, что в оффере мне написали какая у меня будет зарплата - значит вот он контракт. Можно. Вот только никто это здесь контрактом не называет.
Контракт - это когда работадатель берёт на себя обязательства по тому, что он не уволит, если работник делает одно, другое, третье.. это есть в профсоюзах, в гос.учреждениях.
Но к программистам это не относится.
Программисты, которые в США работают на W-2, в большинстве случаев не имеют employment contract. В этом и есть суть At-will employment
Какое обоснование? Зачем обоснование при at-will employment?
нарушение контракта? Какого контракта?
В США есть работники (employee) и контракторы.
И это вообще два мало пересекающихся мира.
У программистов в США (не контракторов) нет контракта в котором прописано сколько часов они должны работать.
Поэтому когда в прошлом месяце у нас упал важный сервис, то наш директор не парился насчёт часов, а написал всей нашей команде вечером: все присоединяемся на звонок сюда и чиним.
Но я не в стартапе, поэтому на следующей неделе, тот же директор написал нашей команде в пятницу: сегодня работаем до обеда, всем хорошим выходных.
А в стартапе - там каждый вечер надо чего то допиливать.
Когда Маск купил Твиттер, то он написал: все будут пахать, кто не хочет - свободны. Это не означает, что он менял контракт. Просто сказал и всё.
Если менеджер или директор посчитает, что кто-то не гребёт достаточно старательно, то никто никому ничего не доказывает: просто тебя зовут в кабинет и сообщают, что ты здесь больше не работаешь.
Слово "профсоюз" и "программист" в одном предложении практически не встречаются.
Серьёзно? Или это стёб такой?
Потому что когда смотришь на зарплаты программистов в США и сравниваешь с зарплатами программистов в Европе, то вообще непонятно, как в Европе вообще хоть кто-то остался? А если ещё на налоги посмотреть - то понятно, что у Европы нет никаких шансов.
А одна из причин почему зарплаты программистов в США в разы больше - это потому что работадатели здесь смелее нанимают людей. В Европе наймёшь человека - и замучаешься сокращать / увольнять с их законами. Лучше уж нанять подороже человека в США, и если что будет не так - то в любой момент можно будет проводить без лишней головной мороки.
Кого-то увольняют, кого-то нет.
Я когда приехал в США, то работал на стройке. Там если хоть немного алкоголя увидят / заподозрят - сразу увольняют.
Когда стал программистом, пришёл работать в один офис в Сиэттле, там на ланч мне стали показывать буфет - вот тут вино, пиво, ... - ни в чём себе не отказывай. Кстати пьяных в офисе я не видел - всё в меру.
Читал, что Сан-Франциско в некоторых офисах народ "грибами" закидывается, чтобы работать более "творчески". В офисе, на работе.
В США можно уволить любого работника без объяснения причин.
https://en.wikipedia.org/wiki/At-will_employment
Я с удивлением читаю как в России (и Европе) работадатели страдают какими "по соглашению сторон" и тому подобное. Здесь таким никто не заморачивается.
Некоторое исключение из этой практики тут - это если работник ДОКАЖЕТ, что его уволили по причине дискриминации. Что сделать довольно непросто.
У нас тут в США интересно сделано, что большинство "обычных" рабочих получают зарплату почасовую. Всё что больше 40 часов в неделю - оплата x1.5 за каждый час. В некоторых случаях это может подниматься до x2.
А вот работники, которые зарабатывают больше - директора, доктора, программисты - называются exempt employees (буквально - исключительные работники). Зарплата у них обычно - месячная. Почасовой ставки нет, что означает, что если они работают большее количество часов - то больше они НЕ получают. Правда, я тут постоянно вижу, как такие работники быстро поняли, что если работать меньшее количество часов, то и меньше получать тоже НЕ будешь, поэтому приходят на работу к обеду, ходят по своим делам в течении дня...
Как запустить эту модель с контекстом 128К?
Достаточно ли просто в параметрах llama.cpp написать этот параметр или надо каким-то образом активировать RoPE scaling?
Я не соглашусь.
Вот например карточка RTX 4090 работает на скорости 1000 GB/s и не упирается в физические ограничения.
Проблема с технологиями последнего поколения всегда в том, что есть какие-то сценарии (edge cases), которые ещё не очень понятны.
Вот взял я 8 каналов памяти DDR5, но похоже для DELL планки нужно было брать 1Rx8, а не 2Rx4. Сейчас про это информации нигде нет, даже в официальном гайде у производителя материнской платы, а через пару лет это будет уже известно шире, и те, кто будут делать такую систему - получает не 190ГБ/c как я, а 250ГБ/c. А с другими материнками (или chipset?) 2Rx4 будут работать нормально.
Или вот взял я Xeon W5-3425, потому что везде пишут, что на процессоре инференция упирается в скорость памяти, а не в скорость процессора. Вот только нигде не пишут, что при некотором малом числе ядер - тем или иным образом скорость упрётся в это. И похоже оптимально иметь 24 ядра, - тогда наверное можно будет получить и около 300 GB/s на 8 каналов.
Вот первопроходцы и набивают шишки.
Кстати, вот ещё некоторые обнаруженных факторов, влияющих на инференцию на CPU, которые только-только начинают быть понятными:
современный софт для инференции не умеет работать с несколько процессорами - только с одним. Инференция на двух процессорах работает МЕДЛЕННЕЕ, чем на одном.
У AMD есть процессоры с большим количество ядер, поддержкой 12 каналов DDR5 памяти, - но оказывается, что там ядра разделены на группы CCD, и если этих групп мало, то работа с памятью никогда не будет на полной скорости. Для многих моделей процессоров 8-канальные Xeon будут быстрее 12-канальных AMD.
371 GB ubergarm / Kimi-K2-Instruct-GGUF / IQ2_KL
452 GB unsloth / Kimi-K2-Instruct-GGUF / UD-Q3_K_XL
588 GB unsloth / Kimi-K2-Instruct-GGUF / UD-Q4_K_XL
Я запустил IQ2_KL квант вот отсюда:
https://huggingface.co/ubergarm/Kimi-K2-Instruct-GGUF
- Intel Xeon W5-3425, 12 ядер
- 384GB RAM DDR5-4800
- Nvidia RTX 4090D 48GB
Получил скорость генерации токенов 6.4 tok/sec
Обработка промпта - 44 tok/sec
Контекст: 32768 токенов
Я вот как раз этим и занялся. Запускал Deepseek V3, Qwen235 и тому подобное.
У меня стоит Nvidia 4090D 48GB, но большие модели не помещаются.
Сначала взял себе Dell Precision 7920, Intel Xeon Gold 5218:
6 каналов памяти
DDR4-2667
я поставил 6 планок по 64 GB (на Ebay каждая планка стоит около $70). Теоретически должно получиться 128GB/s. Intel mlc показывал, что у меня скорость - 121 GB/s. Stream показывал скорость 81 GB/s.
Опытным путём выяснил, что 120 GB/s - это медленно для больших моделей.
Взял Dell Precision T7960, Intel Xeon W5-3425:
8 каналов памяти
DDR5-4800
я поставил 8 планок по 64 GB (на Ebay каждая планка $260). Теоретически должно получиться 307 GB/s. Intel mlc показывает скорость до 190 GB/s. Маловато. Я стал разбираться: BIOS показывает, что у меня память работает в "Mixed mode", а как я думаю - должна в "Octa mode". Может быть проблема в том, что рэнкинг у меня 2Rx4, а я подозреваю, что с моим контроллеров памяти (Intel W790) похоже нужно 1Rx8 (такие на Ebay стоят $380 за планку и там написано что эти планки - для Dell). Получается надо выложить $3000 только за память, но я не уверен, что это решит вопрос: продолжаю разбираться - уже неделю переписываюсь в поддержкой Dell.
Ещё читал что процессоры поколения Intel Xeon W5-3425 способны "переваривать" около 20 GB/s на каждом ядре. У меня 12 ядер и получается, что даже если память разгонится на 307 GB/s, то процессор сможет держать только около 240 GB/s. Но пока вот получается около 190 GB/s. Так что наверное надо было брать процессор с 20+ ядрами. Но у процессоров с большим количество ядер - ниже тактовая частота, и я не уверен, что важнее.
То есть получается, что перейдя с Xeon 5218+DDR4 -> Xeon W5-3425+DDR5:
память ускорилась со 120 GB/s -> 190 GB/s
памяти стало больше: 384 GB -> 512 GB
я заплатил около $2500+ за апгрейд.
ещё на новом процессоре я получил AMX (Advanced Matrix Extensions), который значительно ускоряет обработку промптов (Prompt processing) при инференции и PCIe 5.0.
Для сравнения, у Nvidia RTX 4090D, скорость памяти: 1000 GB/s
Во первых, gasoline (бензин) это совершенно не natural gas (газ).
Во вторых тут у нас в США практически нет машин на газе (natural gas). Так что никому не может даже в голову прийти проводить какие-то исследования рынка таких автомобилей. Нет такого рынка.
А у бензиновых машин нет тормозов? Или почему в электромобилях надо решать что-то с тормозами?
Кстати: тормоза у электромашин расходуются в разы медленнее (потому что рекуперация), а покрышки - быстрее (потому что электромашины обычно тяжелее).
https://habr.com/ru/articles/926438/
Товарищ Вячеслав Голованов, который "Проповедую в храме науки".
Когда вы будете свободны от религиозных занятий, то советую познакомиться, что "gasoline" - это не "с газовым оборудованием" и не "газовые автомобили", а - бензиновые.
Спасибо.
Я на этой неделе игрался с этой моделью в Invoke. Они поддерживают её в 6й версии. Там вроде бы попроще запуститься.
Работает. Но на сайте Flux Kontext выдаёт результат лучше, чем в Invoke. Надо будет попробовать с Comfy...
я перепутал в сообщении выше 🤦
Это ik_llama 2.7 раза быстрее обрабатывает промпт...
Запустить эту же самую модель на llama.cpp я не могу, так как она несовместима.
Запустил другую: недавно вышла интересная модель: https://huggingface.co/unsloth/DeepSeek-TNG-R1T2-Chimera-GGUF
Я запустил квант UD-IQ2_M (213 GB) - это приблизительно такой же размер, как и в моём сообщении выше. Запускал llama.cpp с параметрами:
--model ./models--unsloth--DeepSeek-TNG-R1T2-Chimera-GGUF/UD-IQ2_M--ctx-size 32768
--cache-type-k q8_0
--cache-type-v q8_0
--flash-attn
--threads 12
--host 0.0.0.0 --port 37000
--temp 0.6 --top-p 0.95
--n-gpu-layers 999
--override-tensor "blk\.(3|4|5|6|7|8|9|10|11)\.ffn_.*=CUDA0"
--override-tensor "blk\.(12|13|14|15|16)\.ffn_.*=CUDA1"
--override-tensor exps=CPU
лог:
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: noggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init:
found 2 CUDA devices:
Device 0: NVIDIA GeForce RTX 4090 D, compute capability 8.9, VMM: yes
Device 1: NVIDIA GeForce RTX 3090, compute capability 8.6, VMM: yes load_backend: loaded CUDA backend from /app/
libggml-cuda.soload_backend: loaded CPU backend from /app/
libggml-cpu-sapphirerapids.sobuild: 5830 (bac8bed2) with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu
system_info: n_threads = 12 (n_threads_batch = 12) / 12
| CUDA : ARCHS = 500,610,700,750,800,860,890
| USE_GRAPHS = 1
| PEER_MAX_BATCH_SIZE = 128
| CPU : SSE3 = 1
| SSSE3 = 1
| AVX = 1
| AVX2 = 1
| F16C = 1
| FMA = 1
| BMI2 = 1
| AVX512 = 1
| AVX512_VBMI = 1
| AVX512_VNNI = 1
| AVX512_BF16 = 1
| AMX_INT8 = 1
| LLAMAFILE = 1
| OPENMP = 1
| REPACK = 1
Получил скорость на 2 GPU:
prompt eval time = 53671.03 ms / 1268 tokens ( 42.33 ms per token, 23.63 tokens per second)eval time = 389557.42 ms / 1731 tokens ( 225.05 ms per token, 4.44 tokens per second)
На одном RTX 4090D 48GB:
prompt eval time = 58561.21 ms / 1273 tokens ( 46.00 ms per token, 21.74 tokens per second)eval time = 371584.74 ms / 1566 tokens ( 237.28 ms per token, 4.21 tokens per second)
Запустил эту же модель на ik_llama.cpp на одной RTX 4090D:
prompt eval time = 21474.45 ms / 1265 tokens ( 16.98 ms per token, 58.91 tokens per second)generation eval time = 396856.15 ms / 1690 runs ( 234.83 ms per token, 4.26 tokens per second)Вывод:
Для обычных моделей llama.cpp и ik_llama.cpp приблизительно одинаковы по скорости генерации токенов. По обработке промпта llama.cpp в 2.7 раза быстрее, - думаю что это из-за AMX.
ik_llama.cpp работает в 2-3 раза быстрее только с оптимизированными моделями (_R4):
PP: 164 t/s vs 58 t/s
TG: 8.5 t/s vs 4.2 t/s
Интересно, если в ik_llama.cpp завезут AMX, - она вообще уйдёт в отрыв по скорости обработки промпта?
Отправил инфо про это разрабам тоже: https://github.com/ikawrakow/ik_llama.cpp/issues/437#issuecomment-3040885214